2011-09-26 25 views
6

这是我第一次与json合作。我想从我的行动方法返回JSON:Json结果包装在预标签中 - 如何获得它的价值

public JsonResult Upload() 
{ 
    ... 
    return Json(new { foo = "sos....sos....sos..."}); 
} 

但结果我得到的是在这个“预”的标签我的信息包。如何从这个解析“富”?

"<pre style="word-wrap: break-word; white-space: pre-wrap;">{"foo":"sos....sos....sos..."}</pre>" 

回答

13

我想您收到包裹在一个预先标签中的数据的原因是因为您所请求的数据作为HTML而不是纯文本或JSON。

尝试将数据类型指定为json以停止将响应转换为HTML。

+0

我正在Chrome上使用'header('Content-Type:application/json')'。看起来,尽管有标题,输出仍然包含在预先添加的标签中。 –

+0

我认为@Fenchurch更好地回答了这个问题,这不是如何避免'pre'标签,而是如何获得其内容。 – ProfK

+0

@ProfK这是一个更好的答案,OP不希望'pre'标签..他们只问如何解析foo,因为他们不知道他们可以避免它。为什么从json转换成html然后返回到json? – Arth

3

这将返回与类“yourclass”先预标记的内容。

document.querySelector("pre.yourclass").innerHTML 
0

客户端的处理程序可能会尝试确保服务器的响应格式良好的HTML。我相信一些支持文件上传的JavaScript库会在您描述的标签中包装非HTML repsonses。一个非直观的解决方案可能是将服务器上的mimetype设置为“text/html”,以便ajax处理程序不会尝试包装响应。