[英]What do browsers want for the Content-Type header on json ajax responses?
我正在返回一些需要通過javascript處理的json作為對XMLHTTPRequest的響應。
如果我將響應的內容類型設置為“text / plain”,那么除Chrome之外的所有瀏覽器都會接受它並將其傳遞給我的JS而沒有任何問題。 但是,Chrome會將響應包裝在中
<pre style="word-wrap: break-word; white-space: pre-wrap;">
在將它傳遞給我的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));
}
在FF和IE8中測試(除了Chrome解決的問題)以下簡單的JSON結果,對於其他瀏覽器和更復雜的響應沒有保證......
注意:在這種情況下的內容類型是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);
在uploadCallback()中的ajaxFileUpload.js中替換
io.contentWindow.document.body.innerHTML.innerHTML
同
$(io.contentWindow.document.body.innerHTML).html()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.