我正在通过通过IE插件注入(inject)到每个页面的iframe发出ajax请求。我使用IE的cross domain request,因为IE的jQuery的ajax失败。在IE8和9上,此功能的工作时间为75%。其他25%的xdr.onload
甚至不会触发。
服务器php正在执行其工作... onload
触发和不触发时,日志看起来相同。同样,xdr.onerror
也不会触发。
有任何想法吗?
thisURL = "http://example.com/getmsg.php?cmd=getMessage&iid=ddeb2c1228&uurl=http%3A%2F%2Fwww.cnn.com%2F&t=" + Math.random();
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("GET", thisURL);
xdr.onload = function() {
// this is sometimes called, sometimes not in IE
alert('INCONSISTENT ALERT');
callback(xdr.responseText);
};
xdr.send();
最佳答案
我遇到了一个非常类似的问题:尽管Fiddler显示所有请求和响应 header 的发送都完全符合我的预期,但XDomainRequests仅在某些时间失败。我已经在这些XDR对象上定义了每个事件处理程序和timeout属性,并且没有一个处理程序被调用。 F12开发人员工具显示请求已中止。 GET和POST都可以中止到多个不同的域,但是第一个请求始终可以成功运行。
然后,我尝试将对xdr.send
的调用设置为超时,如下所示:
setTimeout(function () {
xdr.send();
}, 0);
而且有效。我不知道为什么,但这也许会对其他人有所帮助。
关于javascript - 来自IE的不一致的Ajax(XDR)响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5250256/