我正在使用JSONP從第三方(與我的網站不同)獲取JSON數據的Ajax調用及其在Chrome和Firefox上的工作,但在IE上失敗(9 & 10是我試過的版本)。在IE調試器中,我看到調用正在完成(使用Http 200),但是我爲JSONP調用指定的回調沒有被調用。回調沒有得到在Internet Explorer上調用Ajax JSONP調用
我的代碼如下所示:
$.ajax({
url: 'http://api.yipit.com/v1/deals/?key=mykey&division=seattle&limit=1000',
dataType: 'jsonp',
contentType: "text/javascript",
async: false,
cache: false,
crossDomain: true,
jsonp: 'callback',
jsonpCallback: 'processResult',
error: function (xhr, textStatus, error) {
window.alert(error);
},
success: function (data) {
window.alert(JSON.stringify(data));
_yipit_deals = data.response.deals;
}
});
和響應身體看起來是這樣的:
<html><body><pre>processResult({
... [valid JSON data]
});</pre></body></html>
當調用時,誤差函數得到調用,錯誤爲:Error: processResult was not called
和IE調試器顯示嘗試解析響應中的<html><body><pre>
標記時導致的腳本錯誤。在Chrome和Firefox上運行時,這些HTML標記不存在存在於響應正文中,我不確定爲什麼響應在IE的情況下不同。
看來,這些標籤導致IE瀏覽器無法調用回調。我試過爲contentType指定其他值,比如「text/html」,「text」,「application/javascript」,甚至根本沒有指定它,但它沒有任何區別。我正在使用JSONP來解決跨域問題。
任何想法?謝謝!
解決了!謝謝一堆。是的,我會將異步設置爲true。這個問題讓我瘋狂,所以再次感謝! – user2403423
只是澄清,添加'&format = json'到URL解決了我的問題。將'contentType'設置爲'application/json'不起作用。 – user2403423
@ user2403423:好吧,至少有一個工作。 – Blender