Bru*_*win 8 ajax json content-type xmlhttprequest cross-browser
我正在返回一些需要通过javascript处理的json作为对XMLHTTPRequest的响应.
如果我将响应的内容类型设置为"text/plain",那么除Chrome之外的所有浏览器都会接受它并将其传递给我的JS而没有任何问题.但是,Chrome会将响应包装在中
<pre style="word-wrap: break-word; white-space: pre-wrap;">
Run Code Online (Sandbox Code Playgroud)
在将它传递给我的javascript之前.
如果我将响应的内容类型设置为"正确的""application/json"所有浏览器,但Firefox会接受它并将其传递给我的JS而没有任何问题.但是,Firefox会要求将响应保存或打开为文件.
什么是正确的跨浏览器内容类型?
您可以通过使用jQuery funcion parseJSON将响应解析为JSON对象来解决问题 - http://api.jquery.com/jQuery.parseJSON/
传递给函数的参数是JSON对象字符串,您可以从响应数据中提取该字符串:
function AjaxResponse (data) { // AJAX post callback
var jsonResult = $.parseJSON(data.substring(data.indexOf("{"), data.lastIndexOf("}") + 1));
}
Run Code Online (Sandbox Code Playgroud)
在FF和IE8中测试(除了Chrome解决的问题)以下简单的JSON结果,对于其他浏览器和更复杂的响应没有保证......
注意:在这种情况下的内容类型是text/plain或text/html我认为 - 我使用了以下ASP.Net MVC函数来返回结果
ContentResult System.Web.Mvc.Controller.Content(string content);
Run Code Online (Sandbox Code Playgroud)
我在哪里返回JSON对象
System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer
= new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonResponse = jsonSerializer.Serialize(
new { IArticleMediaId = 0
, ImageUrl = Url.Content(fullImgPath)
});
return Content(jsonResponse);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7046 次 |
| 最近记录: |