一尘不染

拒绝访问IE上的jQuery脚本

javascript

我有一个使用jQuery
1.4.2脚本的iframe。将相同的iframe注入到httphttps站点中。jQuery脚本作为相对路径包含在主HTML文件中(例如/scripts/jquery-1.4.2.min.js)。

进行AJAX调用时,Internet
Explorer拒绝访问。AJAX正在调用另一个子域,但它使用的是正确的协议。所有其他浏览器都可以工作,但是Internet Explorer出现以下错误:

脚本5:访问被拒绝。
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)
     }
 });

阅读 586

收藏
2020-05-01

共1个答案

一尘不染

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)
                    }
            });

        }

不确定是否适合您的情况

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]);
2020-05-01