Simplified some of the logic for handling the ajax aborts, making sure that ajaxStop...
authorjeresig <jeresig@gmail.com>
Tue, 12 Jan 2010 15:59:50 +0000 (10:59 -0500)
committerjeresig <jeresig@gmail.com>
Tue, 12 Jan 2010 15:59:50 +0000 (10:59 -0500)
src/ajax.js

index e9b02fc..83e5bdc 100644 (file)
@@ -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) { }