X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax.js;h=83e5bdcaff2e10177596c58ff451b1ae4e79e476;hb=857d8afd6917775b7cef6fd22e57dd9acec77f01;hp=e9b02fcd905d5031ec8ebc3a845e40a825e87699;hpb=d60b19781095f508e32a590c7ee112817b0794ee;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index e9b02fc..83e5bdc 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -390,18 +390,19 @@ jQuery.extend({ // Wait for a response to come back var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) { - // The request was aborted, clear the interval and decrement jQuery.active + // The request was aborted if ( !xhr || xhr.readyState === 0 ) { + // Opera doesn't call onreadystatechange before this point + // so we simulate the call + if ( !requestDone ) { + complete(); + } + requestDone = true; if ( xhr ) { xhr.onreadystatechange = jQuery.noop; } - // Handle the global AJAX counter - if ( s.global && ! --jQuery.active ) { - jQuery.event.trigger( "ajaxStop" ); - } - // The transfer is complete and the data is available, or the request timed out } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) { requestDone = true; @@ -456,15 +457,11 @@ jQuery.extend({ xhr.abort = function() { oldAbort.call( xhr ); - if ( !requestDone ) { - complete(); - } - if ( xhr ) { - xhr.onreadystatechange = null; + xhr.readyState = 0; } - requestDone = true; + onreadystatechange(); }; } catch(e) { }