Kyl*_*yle 46 javascript ajax jquery internet-explorer
我有一个使用jQuery 1.4.2脚本的iframe.同样的iframe被注入到两个http和https站点中.jQuery脚本作为相对路径包含在主HTML文件中(例如,/ scripts/jquery-1.4.2.min.js).
进行AJAX调用时,Internet Explorer拒绝访问.AJAX正在调用另一个子域,但它正在使用正确的协议.所有其他浏览器都可以工作,但Internet Explorer会出现以下错误:
SCRIPT5:访问被拒绝.
jquery-1.4.2.min.js,第127行字符344
我听说这个错误来自跨域AJAX调用.但为什么IE是唯一一个给我废话的人呢?有IE解决方案吗?
另外,这是我的AJAX:
$.ajax({
url: thisURL,
dataType: "json",
data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()},
success: function(ret){
callback(ret)
}
});
Run Code Online (Sandbox Code Playgroud)
Raf*_*fay 44
IE要求您使用XDomainRequest代替XHR进行跨站点,您可以尝试类似......
if ($.browser.msie && window.XDomainRequest) {
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("get", url);
xdr.onload = function() {
// XDomainRequest doesn't provide responseXml, so if you need it:
var dom = new ActiveXObject("Microsoft.XMLDOM");
dom.async = false;
dom.loadXML(xdr.responseText);
};
xdr.send();
} else {
// your ajax request here
$$.ajax({
url: thisURL,
dataType: "json",
data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()},
success: function(ret){
callback(ret)
}
});
}
Run Code Online (Sandbox Code Playgroud)
参考
http://forum.jquery.com/topic/cross-domain-ajax-and-ie
不确定它是否适合您的情况
xdr = new XDomainRequest();
xdr.onload=function()
{
alert(xdr.responseText);
}
xdr.open("GET", thisUrl); //thisURl ->your cross domain request URL
//pass your data here
xdr.send([data]);
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到更多的指导
这为我优雅地解决了这个问题:
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
只需在jQuery之后和脚本之前安装/编译并像往常一样使用$ .ajax方法,其余的将自动处理.
| 归档时间: |
|
| 查看次数: |
95284 次 |
| 最近记录: |