XDomainRequest onload未运行

时间:2013-08-18 16:26:20

标签: jquery json internet-explorer

我正在尝试使用$ .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不符合标准。

1 个答案:

答案 0 :(得分:1)

您的第二个代码段指定了一个回调参数,因此$.getJSON实际上使用的是JSONP,这是一个很好的跨域。

您首先尝试使用CORS。由于请求被拒绝,我认为远程服务器没有实现CORS,或者只是不想允许您的域。

第二个代码段应该适用于所有浏览器,包括IE8。