aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Lax <erik@datahack.se>2017-03-23 14:33:25 +0100
committerTimmy Willison <4timmywil@gmail.com>2017-07-24 11:44:09 -0400
commit262acc6f1e0f71a3a8b786e3c421b2e645799ea0 (patch)
treed6b57361c556b2a13e73454b746733ae2795ece4
parentd65bdd5fc8edf390211ed2223a03c6a00a41c649 (diff)
downloadjquery-262acc6f1e0f71a3a8b786e3c421b2e645799ea0.tar.gz
jquery-262acc6f1e0f71a3a8b786e3c421b2e645799ea0.zip
Ajax: add an ontimeout handler to all requests
Fixes gh-3586 Close gh-3590
-rw-r--r--src/ajax/xhr.js5
-rw-r--r--test/unit/ajax.js17
2 files changed, 20 insertions, 2 deletions
diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js
index 33dafb01d..4a31171ac 100644
--- a/src/ajax/xhr.js
+++ b/src/ajax/xhr.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
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 07ff40783..4dc7b9d3a 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -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" );