我覺得我應該能夠找到這個anwser,但經過幾個小時的研究之後已經沒有成功。我有這個page與簡單的jQuery Ajax調用API服務。它在Chrome,Safari和Firefox,甚至IE 10中都能正常工作。但IE 9和8似乎失敗了。jquery ajax在ie8/9中調用不起作用
下面的代碼:
$.ajax({
type: "GET",
url: "http://api.domain.org/api/campus?filtertype=name&filter="+ escape($('#campus').val()),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
$('#results').children().remove();
var arrayd = (typeof result) == 'string' ? eval('(' + result + ')') : result;
if (arrayd != null) {
for (var i = 0; i < arrayd.length; i++) {
$('#results').append('<li>' + arrayd[i].SchoolName + '</li>');
}
}
},
error: function (request, status, errorThrown) {
alert("There was an issue with the request");
} // When Service call fails
});
最大的問題是該警示的文件,但我不能看到IE調試工具不幫我看看,如果我連打了服務器的任何流量。
我已經嘗試了一些事情:
- 設置每$就設置http://mvcdiary.com/2013/01/16/jquery-ajax-request-not-working-in-ie9/
- 設置 '$ .support.cors = TRUE;' Ajax調用
- 使用 'jquery.iecors.js'
更新
改變數據類型爲 'JSONP' 後開始之前,我看到了交通IE 8/9與成功的電話。但是,我現在沒有任何瀏覽器調用成功方法。
$.ajax({
type: "GET",
url: "http://api.athletesinaction.org/api/campus?filtertype=name&filter="+ escape($('#campus').val()),
dataType: "jsonp",
async: false,
contentType: "application/javascript",
crossDomain: true,
jsonpCallback: 'myTest',
success: myTest,
error: function (request, status, errorThrown) {
alert(errorThrown);
} // When Service call fails
});
function myTest (argument) {
alert("YEAH");
$('#results').children().remove();
var arrayd = (typeof result) == 'string' ? eval('(' + result + ')') : result;
if (arrayd != null) {
for (var i = 0; i < arrayd.length; i++) {
$('#results').append('<li>' + arrayd[i].SchoolName + '</li>');
}
}
}
你爲什麼要評價JSON?如果你使用'JSON.parse()'而不是? JSON響應是什麼樣的?你在IE中遇到什麼控制檯錯誤? – user2736012
您應該使用ajax調用的[data]屬性來指定查詢參數。另外,請嘗試jsonp。 – jonosma
IE8和IE9不支持XHR2,這意味着發送一個CORS請求,你必須使用不同的XHR。 jQuery不提供這種支持,因此您必須自己動手或安裝一個可以爲您提供支持的插件。將cors支持設置爲true絕對沒用,在桌面瀏覽器中絕不會有這種情況。 –