diff options
author | jeresig <jeresig@gmail.com> | 2010-01-12 10:59:50 -0500 |
---|---|---|
committer | jeresig <jeresig@gmail.com> | 2010-01-12 10:59:50 -0500 |
commit | dd45c324ecf12732185656de89b40d47e3b9d3ad (patch) | |
tree | fc8579f41bb905d7432e8c92695889f98ac0a8b0 | |
parent | d60b19781095f508e32a590c7ee112817b0794ee (diff) | |
download | jquery-dd45c324ecf12732185656de89b40d47e3b9d3ad.tar.gz jquery-dd45c324ecf12732185656de89b40d47e3b9d3ad.zip |
Simplified some of the logic for handling the ajax aborts, making sure that ajaxStop isn't called twice.
-rw-r--r-- | src/ajax.js | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/ajax.js b/src/ajax.js index e9b02fcd9..83e5bdcaf 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) { } |