我正在通过通过IE插件注入到每个页面的iframe发出ajax请求。我正在使用IE的跨域请求,因为IE的jQuery的ajax失败。在IE8和9上,此功能的工作时间为75%。另外25%的时间xdr.onload甚至不会触发。
xdr.onload
服务器php正在执行其工作…该日志在何时onload触发和不触发时看起来相同。另外,xdr.onerror也不会触发。
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();
在最后一分钟发现了问题。就我而言,即使请求没有超时,我也需要指定一个超时值。为了正确调试XDR问题,我建议使用以下代码,每个警报都告诉您代码的最新情况。正如我所说,就我而言,这是一个缺失的timeout声明。但是下面的代码应该调试任何XDR问题:
timeout
var xdr = new XDomainRequest(); if (xdr) { xdr.onerror = function () { // alert('xdr onerror'); }; xdr.ontimeout = function () { // alert('xdr ontimeout'); }; xdr.onprogress = function () { // alert("XDR onprogress"); // alert("Got: " + xdr.responseText); }; xdr.onload = function() { // alert('onload' + xdr.responseText); callback(xdr.responseText); }; xdr.timeout = 5000; xdr.open("get", thisURL); xdr.send(); } else { // alert('failed to create xdr'); }