2011-12-12 36 views
4

我做了一個AJAX調用,它適用於FF & Chrome,但不適用於IE 7-8-9。我從我的域加載JSON文件:jQuery,ajax請求在IE上無法成功JSON on

$.ajax({ 
     url: 'js/jquery.desobbcode.json', 
     dataType: 'json', 
     cache: false, 
     success: function(json) { 
      alert('ok'); 
     }, 
     error: function(xhr, errorString, exception) { 
      alert("xhr.status="+xhr.status+" error="+errorString+" exception="+exception); 
     } 
    }); 

我也加入contentType: 'application/json'嘗試,但我收到相同的輸出是:

xhr.status=200 
error=parsererror 
exception=SyntaxError Unterminated string constant 

我檢查我的JSON文件,JSONLint,它是確定。我檢查是否有額外的逗號,並且內容也被修剪。 See my JSON file

如果我把dataType: 'text',我收到OK警報,但也有一個調試彈出窗口。

你能幫我嗎?問候。

+0

對我來說,問題在於你的數據類型。響應中使用了什麼mimetype?它應該和客戶期待的一樣。如果您的回覆使用的是text/html mimetype,則會在使用dataType:json時引發錯誤回調。 – stephenmuss

+0

js/jquery.desobbcode.json是哪個內容類型的頭文件? –

+0

「如果我把dataType:'text',我會收到OK警報,但是也會出現一個調試彈出窗口。」 - 你的意思是你得到一個錯誤?如果是這樣說的話。 – Terry

回答

0

也許嘗試將contentType設置爲「text/json」而不是「application/json」。過去我使用「application/json」時遇到過一些問題,使用「text/json」似乎一直效果更好。

+0

不知道這樣的MIME類型存在。 –

+0

我不認爲它確實如此,RFC表示application/json是正確的mime,但是我發現text/json的工作更加一致。 –

5

IE is known to have issues with implied content types.

... Internet Explorer 7中的新的XMLHttpRequest類沒有實現setRequestHeader非常直觀。它不是設置指定的頭部,而是附加值。

嘗試指定contentType和檢查什麼是來自服務器回來:

$.ajax({ 
    url: 'js/jquery.desobbcode.json', 
    dataType: 'json', 
    contentType: "application/json; charset=utf-8", 
    ... 
}); 

你也可以試試發送空白數據:

$.ajax({ 
    url: 'js/jquery.desobbcode.json', 
    dataType: 'json', 
    contentType: "application/json; charset=utf-8", 
    data: {} 
    ... 
}); 
1

它在JSON的換行。這應該在IE瀏覽器解析:

{"inputButton":[{"id":"desoBBCode_bold","value":"Gras","tag":"b"},{"id":"desoBBCode_italic","value":"Italique","tag":"i"},{"id":"desoBBCode_underline","value":"Souligné","tag":"u"},{"id":"desoBBCode_image","value":"Image","tag":"img"},{"id":"desoBBCode_link","value":"Lien","tag":"url"},{"id":"desoBBCode_quote","value":"Citation","tag":"quote"}],"selectTextSize":[{"text":"Taille","value":""},{"text":"Trèstrèspetit","value":"1"},{"text":"Trèspetit","value":"2"},{"text":"Petit","value":"3"},{"text":"Gros","value":"4"},{"text":"Trèsgros","value":"5"},{"text":"Trèstrèsgros","value":"6"}],"selectTextColor":[{"text":"Couleur","value":"a"},{"text":"Rouge","value":"red"},{"text":"Bleu","value":"blue"},{"text":"Vert","value":"green"}]} 

活生生的例子:http://jsbin.com/umahiq/edit

+0

是的,看到拋出的錯誤:http://jsfiddle.net/MarkSchultheiss/HrEUw/ –

2

如果你正在使用PHP腳本來呼應你的JSON作爲一個字符串只是把

header('Content-Type: application/json; charset=utf-8'); 

echo $jsonString 

一行。