Javascript XDomainRequest有时会随机中止
XDomainRequest在ie9中,大多数时间正常,但有时会中止。以前有人经历过吗 如果您想看到这是xdr实现,im使用:Javascript XDomainRequest有时会随机中止,javascript,xdr,Javascript,Xdr,XDomainRequest在ie9中,大多数时间正常,但有时会中止。以前有人经历过吗 如果您想看到这是xdr实现,im使用: (function( jQuery ) { if ( window.XDomainRequest ) { jQuery.ajaxTransport(function( s ) { if ( s.crossDomain && s.async ) { if ( s.timeout ) { s.xdr
(function( jQuery ) {
if ( window.XDomainRequest ) {
jQuery.ajaxTransport(function( s ) {
if ( s.crossDomain && s.async ) {
if ( s.timeout ) {
s.xdrTimeout = s.timeout;
delete s.timeout;
}
var xdr;
return {
send: function( _, complete ) {
function callback( status, statusText, responses, responseHeaders ) {
xdr.onload = xdr.onerror = xdr.ontimeout = jQuery.noop;
xdr = undefined;
complete( status, statusText, responses, responseHeaders );
}
xdr = new window.XDomainRequest();
xdr.onload = function() {
callback( 200, "OK", { text: xdr.responseText }, "Content-Type: " + xdr.contentType );
};
xdr.onerror = function() {
callback( 404, "Not Found" );
};
xdr.onprogress = function() {};
if ( s.xdrTimeout ) {
xdr.ontimeout = function() {
callback( 0, "timeout" );
};
xdr.timeout = s.xdrTimeout;
}
xdr.open( s.type, s.url, true );
xdr.send( ( s.hasContent && s.data ) || null );
},
abort: function() {
if ( xdr ) {
xdr.onerror = jQuery.noop();
xdr.abort();
}
}
};
}
});
}
})( jQuery );
不久前我遇到了这个问题,我发现如果将send方法包装在setTimeout中,它就解决了这个问题
setTimeout(function(){
xdr.send( ( s.hasContent && s.data ) || null );
}, 0);
我会试着给你回电话。非常感谢你!我猜想xdr.open()由于某种原因正在错误地异步执行。将send放入超时将send方法置于要执行的作用域队列的末尾,从而将其推到.open正在执行的任何操作之后。但这当然都是猜测。(可能是术语的屠杀)