繁体   English   中英

如何在IE9及更早版本中进行非JSONP跨域Ajax调用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM