Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Experiment switching to using onreadystatechange rather than a setInt…

…erval for Ajax requests. Fixes #5735.
  • Loading branch information...
commit fe6c86d53046b0f4d648f61c0b8e75387af65152 1 parent a00e63e
@jeresig jeresig authored
Showing with 16 additions and 29 deletions.
  1. +16 −29 src/ajax.js
View
45 src/ajax.js
@@ -380,29 +380,21 @@ jQuery.extend({
}
// Wait for a response to come back
- var onreadystatechange = function( isTimeout ) {
+ var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
// The request was aborted, clear the interval and decrement jQuery.active
if ( !xhr || xhr.readyState === 0 ) {
- if ( ival ) {
- // clear poll interval
- clearInterval( ival );
- ival = null;
-
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active ) {
- jQuery.event.trigger( "ajaxStop" );
- }
+ requestDone = true;
+ xhr.onreadystatechange = function(){};
+
+ // 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;
-
- // clear poll interval
- if (ival) {
- clearInterval(ival);
- ival = null;
- }
+ xhr.onreadystatechange = function(){};
status = isTimeout === "timeout" ?
"timeout" :
@@ -446,19 +438,14 @@ jQuery.extend({
}
};
- if ( s.async ) {
- // don't attach the handler to the request, just poll it instead
- var ival = setInterval(onreadystatechange, 13);
-
- // Timeout checker
- if ( s.timeout > 0 ) {
- setTimeout(function() {
- // Check to see if the request is still happening
- if ( xhr && !requestDone ) {
- onreadystatechange( "timeout" );
- }
- }, s.timeout);
- }
+ // Timeout checker
+ if ( s.async && s.timeout > 0 ) {
+ setTimeout(function() {
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone ) {
+ onreadystatechange( "timeout" );
+ }
+ }, s.timeout);
}
// Send the data
Please sign in to comment.
Something went wrong with that request. Please try again.