0

我正在尝试使用 $.getJSON 进行跨域请求。但是在 IE 中,我得到了一个讨厌的访问被拒绝错误。也许我不了解 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 没有达到标准。

4

1 回答 1

1

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

您的第一个片段尝试使用 CORS。由于请求被拒绝,我假设远程服务器没有实现 CORS 或者只是不想允许您的域。

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

于 2013-08-18T16:45:51.490 回答