慕的地8271018
对于IE8和IE9,您需要使用XDomainRequest(XDR)。如果你看下面你会看到它与$ .ajax类似的格式。至于我的研究得到了我,我无法让这个跨域工作在IE6和7(仍在为此寻找解决办法)。XDR首先出现在IE8中(它也在IE9中)。所以基本上首先,我测试6/7并且不做AJAX。IE10 +能够像所有其他浏览器一样进行跨域操作(恭喜微软......叹息)在那之后,如果在窗口中测试'XDomainRequest(显然比浏览器嗅探更好)并且以这种方式执行JSON AJAX请求,那么其他方面ELSE通常使用$ .ajax进行测试。希望这可以帮助!!永远地把我带走,让这一切都得到了解决有关XDomainRequest对象的信息// call with your url (with parameters) // 2nd param is your callback function (which will be passed the json DATA back)crossDomainAjax('http://www.somecrossdomaincall.com/?blah=123', function (data) {
// success logic});function crossDomainAjax (url, successCallback) {
// 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)
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);
}
});
}}