Permalink
Browse files

Ajax: add an ontimeout handler to all requests

Fixes gh-3586
Close gh-3590
  • Loading branch information...
eriklax authored and timmywil committed Mar 23, 2017
1 parent d65bdd5 commit 262acc6f1e0f71a3a8b786e3c421b2e645799ea0
Showing with 20 additions and 2 deletions.
  1. +3 −2 src/ajax/xhr.js
  2. +17 −0 test/unit/ajax.js
@@ -75,7 +75,8 @@ jQuery.ajaxTransport( function( options ) {
return function() {
if ( callback ) {
callback = errorCallback = xhr.onload =
xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
xhr.onerror = xhr.onabort = xhr.ontimeout =
xhr.onreadystatechange = null;
if ( type === "abort" ) {
xhr.abort();
@@ -115,7 +116,7 @@ jQuery.ajaxTransport( function( options ) {
// Listen to events
xhr.onload = callback();
errorCallback = xhr.onerror = callback( "error" );
errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
// Support: IE 9 only
// Use onreadystatechange to replace onabort
@@ -527,6 +527,23 @@ QUnit.module( "ajax", {
};
} );
ajaxTest( "jQuery.ajax() - native timeout", 2, function( assert ) {
return {
url: url( "data/name.php?wait=1" ),
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.timeout = 1;
return xhr;
},
error: function( xhr, msg ) {
assert.strictEqual( msg, "error", "Native timeout triggers error callback" );
},
complete: function() {
assert.ok( true, "complete" );
}
};
} );
ajaxTest( "jQuery.ajax() - events with context", 12, function( assert ) {
var context = document.createElement( "div" );

0 comments on commit 262acc6

Please sign in to comment.