X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fajax.js;h=83e5bdcaff2e10177596c58ff451b1ae4e79e476;hb=6776920301308e1c7f251a67bbecbb6761a1f7b7;hp=07e706c4c5fb55b9cb9ceb90d968e5438ee94fa0;hpb=7afe6dcc0837ac00cea7fbb7de6fb95b745148c2;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index 07e706c..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; @@ -455,12 +456,11 @@ jQuery.extend({ var oldAbort = xhr.abort; xhr.abort = function() { oldAbort.call( xhr ); + if ( xhr ) { xhr.readyState = 0; } - if ( !requestDone ) { - complete(); - } + onreadystatechange(); }; } catch(e) { }