我觉得我应该能够找到这个答案,但经过数小时的研究却没有成功。我有这个 page使用简单的 jquery ajax 调用 API 服务。它在 Chrome、Safari 和 Firefox,甚至 IE 10 中运行良好。但 IE 9 和 8 似乎失败了。
代码如下:
$.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/ 设置 $.ajax 设置
- 设置“$.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>');
}
}
}
最佳答案
尝试将 dataType
更改为 jsonp
。
虽然服务需要支持这种类型的请求。
关于javascript - ie8/9 中的 jquery ajax 调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19551681/