aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjeresig <jeresig@gmail.com>2010-01-12 10:59:50 -0500
committerjeresig <jeresig@gmail.com>2010-01-12 10:59:50 -0500
commitdd45c324ecf12732185656de89b40d47e3b9d3ad (patch)
treefc8579f41bb905d7432e8c92695889f98ac0a8b0
parentd60b19781095f508e32a590c7ee112817b0794ee (diff)
downloadjquery-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.js21
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) { }