簡體   English   中英

瀏覽器對json ajax響應的Content-Type標頭需要什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM