我想调用以下Web服务
var url = 'search.php',
data = {
addressdetails: 1,
format: 'json',
osmtype: 'node',
q: 'london'
};
$.ajax('//open.mapquestapi.com/nominatim/v1/' + url, {
type: 'GET',
data: data,
contentType: 'application/json',
success: function (data, status) {
var results = [];
if (status === 'success' && !data.error) {
console.log('success');
}
},
error: function(jqXHR, textStatus, errorThrown ) {
console.log('error');
}
});
我用这个例子创建了一个JSFiddle:http://jsfiddle.net/JX27m/1
我被告知IE8 +支持跨源资源共享(CORS),所以应该有一种方法来调整这段代码以使其在IE9上运行,对吗?
干杯, 克里斯托夫
答案 0 :(得分:1)
假设有问题的服务器支持CORS并允许您的来源,您可以使用IE的XDomainRequest
对象而不是XMLHttpRequest
。 jQuery并没有为你做到这一点,因为jQuery团队觉得XDR对象存在太多问题(this ticket中的细节,靠近底部),但你可以自己做,或者有jQuery的插件提供该功能。例如,this one是从同一个jQuery票证链接的。
答案 1 :(得分:1)
检查CanIUse.com,您会看到IE 8& 9有部分支持。我的猜测是因为CORS实际上并没有在规范中作为CORS引入到2009年(在IE 8之后并且在IE 9中出现太迟)。他们可能实现了对Access Control for Cross-Site Requests的支持,最终成为了CORS。他们似乎支持XDomainRequest Object跨域请求。选中“我可以使用资源”选项卡查找其他一些文章。