我正在尝试使用$ .getJSON制作一个可以正常运行的跨域请求。但在IE中,我得到了一个讨厌的 Access is Denied 错误。也许我不理解onload参数或XDR,但是当我添加参数没有任何反应时,只会挂起没有错误或什么都没有。这是代码:
var xdr = new XDomainRequest();
xdr.open("get", "http://somedomain.com?callback=?");
xdr.onload = function() {
$.extend($.CSSService.sessionData,{"call_type":"create"});
$.extend($.CSSService.sessionData,data);
$.CSSService.sessionData.typing = false;
timeoutTimer = setTimeout(PollServer,100);
if(Callback) setTimeout(Callback,500);
};
xdr.send();
以下是其他浏览器中完美运行的JSON调用。
$.getJSON("http://somedomain.com?callback=?",$.extend($.CSSService.sessionData, {"call_type":"create"}),function(data){
$.extend($.CSSService.sessionData,data);
$.CSSService.sessionData.typing = false;
timeoutTimer = setTimeout(PollServer,100);
if(Callback) setTimeout(Callback,500);
}
});
我被困了好几个小时。关于我做错了什么的任何想法。代码示例非常受欢迎,因为我的JSON和jQuery不符合标准。
答案 0 :(得分:1)
您的第二个代码段指定了一个回调参数,因此$.getJSON
实际上使用的是JSONP,这是一个很好的跨域。
您首先尝试使用CORS。由于请求被拒绝,我认为远程服务器没有实现CORS,或者只是不想允许您的域。
第二个代码段应该适用于所有浏览器,包括IE8。