龙空技术网

AJAX在IE8下的跨域问题

是阿狸阿 73

前言:

现在大家对“jquery全局ajax事件”大致比较注意,看官们都需要分析一些“jquery全局ajax事件”的相关文章。那么小编同时在网络上汇集了一些关于“jquery全局ajax事件””的相关内容,希望看官们能喜欢,小伙伴们一起来了解一下吧!

跨域问题可以参考CORS标准。

CORS允许浏览器向跨源服务器,发出XMLHttpRequest请求。

具体操作只要在请求的地址服务的头信息中添加header("Access-Control-Allow-Origin:;) 即可

但是在IE8不可行,需使用XDomainRequest (XDR)来跨域访问

兼容代码如下:

    function crossDomainAjax (url,successCallback) {        url = encodeURI(url);           // IE8 & 9 only Cross domain JSON GET request        if ('XDomainRequest' in window && window.XDomainRequest !== null) {            var xdr = new XDomainRequest(); // Use Microsoft XDR            xdr.open('get', url);            xdr.onload = function () {                var dom  = new ActiveXObject('Microsoft.XMLDOM'),                    JSON = $.parseJSON(xdr.responseText);                dom.async = false;                if (JSON == null || typeof (JSON) == 'undefined') {                    JSON = $.parseJSON(data.firstChild.textContent);                }                successCallback(JSON); // internal function            };            xdr.onerror = function() {                _result = false;              };            xdr.send();        }         // IE7 and lower can't do cross domain        else if (navigator.userAgent.indexOf('MSIE') != -1 &&                parseInt(navigator.userAgent.match(/MSIE ([\d.]+)/)[1], 10) < 8) {                    return false;                }            // Do normal jQuery AJAX for everything else                  else {            $.ajax({                url: url,                cache: false,                dataType: 'json',                type: 'GET',                async: false, // must be set to false                success: function (data, success) {                    successCallback(data);                }            });        }    }

参考链接:

标签: #jquery全局ajax事件 #ie7ajax无法返回json #ie8ajax请求失败 #jqueryajaxload页面 #ie8ajaxcors