[英]How to make a non-JSONP cross-domain Ajax call in IE9 and earlier
我想调用以下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上运行,对吧?
干杯,克里斯托夫
假设有问题的服务器支持CORS并允许您的源,您可以使用IE的XDomainRequest
对象而不是XMLHttpRequest
。 jQuery并没有为你做到这一点,因为jQuery团队觉得XDR对象存在太多问题( 这个故障中的细节,靠近底部),但是你可以自己做,或者有jQuery的插件提供这个功能。 例如, 这个链接来自同一个jQuery票证。
检查CanIUse.com ,您会看到IE 8和9有部分支持。 我的猜测是因为CORS实际上并没有在规范中作为CORS引入到2009年(在IE 8之后并且在IE 9中出现太迟)。 他们可能实现了对跨站请求的访问控制的支持,最终成为CORS。 他们似乎支持跨域请求的XDomainRequest对象 。 选中“我可以使用资源”选项卡查找其他一些文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.