X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax%2Fajax.js;h=1426604bd73909a80a4cfce7602eb68c0dd3f41f;hb=08d865862a0d26f8ca616ff5a39d97203bda9614;hp=07d69b40dcac60336dfec64df603d46235b557f2;hpb=7dd456176d399a27784f22e58168ba9db95df8f5;p=jquery.git diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js index 07d69b4..1426604 100644 --- a/src/ajax/ajax.js +++ b/src/ajax/ajax.js @@ -476,6 +476,7 @@ jQuery.extend({ * if(passed == 2) { * ok( true, 'Check local and global callbacks after timeout' ); * clearTimeout(timeout); + * $('#main').unbind("ajaxError"); * start(); * } * }; @@ -492,6 +493,22 @@ jQuery.extend({ * success: fail * }); * + * @test stop(); $.ajaxTimeout(50); + * $.ajax({ + * type: "GET", + * timeout: 5000, + * url: "data/name.php?wait=1", + * error: function() { + * ok( false, 'Check for local timeout failed' ); + * start(); + * }, + * success: function() { + * ok( true, 'Check for local timeout' ); + * start(); + * } + * }); + * + * * @name $.ajaxTimeout * @type jQuery * @param Number time How long before an AJAX request times out. @@ -520,6 +537,14 @@ jQuery.extend({ * (String) dataType - The type of data that you're expecting back from * the server (e.g. "xml", "html", "script", or "json"). * + * (Boolean) ifModified - Allow the request to be successful only if the + * response has changed since the last request, default is false, ignoring + * the Last-Modified header + * + * (Number) timeout - Local timeout to override global timeout, eg. to give a + * single request a longer timeout while all others timeout after 1 seconds, + * see $.ajaxTimeout + * * (Boolean) global - Wheather to trigger global AJAX event handlers for * this request, default is true. Set to true to prevent that global handlers * like ajaxStart or ajaxStop are triggered. @@ -588,6 +613,8 @@ jQuery.extend({ var error = type.error; var dataType = type.dataType; var global = typeof type.global == "boolean" ? type.global : true; + var timeout = typeof type.timeout == "number" ? type.timeout : jQuery.timeout; + var ifModified = type.ifModified || false; data = type.data; url = type.url; type = type.type; @@ -633,8 +660,13 @@ jQuery.extend({ // Make sure that the request was successful or notmodified if ( status != "error" ) { // Cache Last-Modified header, if ifModified mode. - var modRes = xml.getResponseHeader("Last-Modified"); - if ( ifModified && modRes ) jQuery.lastModified[url] = modRes; + var modRes; + try { + modRes = xml.getResponseHeader("Last-Modified"); + } catch(e) {} // swallow exception thrown by FF if header is not available + + if ( ifModified && modRes ) + jQuery.lastModified[url] = modRes; // If a local callback was specified, fire it if ( success ) @@ -674,7 +706,7 @@ jQuery.extend({ xml.onreadystatechange = onreadystatechange; // Timeout checker - if(jQuery.timeout > 0) + if(timeout > 0) setTimeout(function(){ // Check to see if the request is still happening if (xml) { @@ -686,7 +718,7 @@ jQuery.extend({ // Clear from memory xml = null; } - }, jQuery.timeout); + }, timeout); // Send the data xml.send(data);