gpt4 book ai didi

ajax - 浏览器对 json ajax 响应中的 Content-Type header 有什么要求?

转载 作者:行者123 更新时间:2023-12-04 08:00:08 24 4
gpt4 key购买 nike

我正在返回一些需要由 javascript 处理的 json 作为对 XMLHTTPRequest 的响应。

如果我将响应的内容类型设置为“文本/纯文本”,除 Chrome 之外的所有浏览器都会接受它并将其传递给我的 JS 没有问题。但是,Chrome 会将响应包装在

<pre style="word-wrap: break-word; white-space: pre-wrap;"> 

在将它传递给我的 javascript 之前。

如果我将响应的内容类型设置为“正确的”“应用程序/json”,则所有浏览器都会接受它并将其传递给我的 JS 没有问题。但是,Firefox 会要求将响应作为文件保存或打开。

什么是正确的跨浏览器内容类型?

最佳答案

您可以通过使用 jQuery funcion parseJSON - http://api.jquery.com/jQuery.parseJSON/ 将响应解析为 JSON 对象来解决该问题。

您传递给该函数的参数是您从响应数据中提取的 JSON 对象字符串:

function AjaxResponse (data) {  // AJAX post callback 
var jsonResult = $.parseJSON(data.substring(data.indexOf("{"), data.lastIndexOf("}") + 1));
}

在 FF 和 IE8 中针对以下简单的 JSON 结果进行了测试(除了 Chrome 解决了这个问题),对于其他浏览器和更复杂的响应,不能保证......

注意:我认为在这种情况下的内容类型是 text/plain 或 text/html - 我使用了以下 ASP.Net MVC 函数来返回结果
ContentResult System.Web.Mvc.Controller.Content(string content);

我返回 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);

关于ajax - 浏览器对 json ajax 响应中的 Content-Type header 有什么要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com