我觉得我应该能够找到这个anwser,但经过数小时的研究后却没有成功。我有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调试工具中的任何流量,这对我来说无法看到我是否能够点击服务器。
我尝试了很多东西:
更新
将dataType更改为'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>');
}
}
}
答案 0 :(得分:3)
尝试将dataType
更改为jsonp
。
虽然该服务需要支持这种类型的请求。
答案 1 :(得分:0)
是的,它在IE8中不起作用。
如果您需要支持IE8,请使用JSONP或postMessage,或两者兼而有之。