Added local timeout option for $.ajax + test

This commit is contained in:
Jörn Zaefferer 2006-10-01 14:15:56 +00:00
parent 7dd456176d
commit e94db76ada

View file

@ -476,6 +476,7 @@ jQuery.extend({
* if(passed == 2) { * if(passed == 2) {
* ok( true, 'Check local and global callbacks after timeout' ); * ok( true, 'Check local and global callbacks after timeout' );
* clearTimeout(timeout); * clearTimeout(timeout);
* $('#main').unbind("ajaxError");
* start(); * start();
* } * }
* }; * };
@ -492,6 +493,22 @@ jQuery.extend({
* success: fail * 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 * @name $.ajaxTimeout
* @type jQuery * @type jQuery
* @param Number time How long before an AJAX request times out. * @param Number time How long before an AJAX request times out.
@ -520,6 +537,10 @@ jQuery.extend({
* (String) dataType - The type of data that you're expecting back from * (String) dataType - The type of data that you're expecting back from
* the server (e.g. "xml", "html", "script", or "json"). * the server (e.g. "xml", "html", "script", or "json").
* *
* (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 * (Boolean) global - Wheather to trigger global AJAX event handlers for
* this request, default is true. Set to true to prevent that global handlers * this request, default is true. Set to true to prevent that global handlers
* like ajaxStart or ajaxStop are triggered. * like ajaxStart or ajaxStop are triggered.
@ -588,6 +609,7 @@ jQuery.extend({
var error = type.error; var error = type.error;
var dataType = type.dataType; var dataType = type.dataType;
var global = typeof type.global == "boolean" ? type.global : true; var global = typeof type.global == "boolean" ? type.global : true;
var timeout = typeof type.timeout == "number" ? type.timeout : jQuery.timeout;
data = type.data; data = type.data;
url = type.url; url = type.url;
type = type.type; type = type.type;
@ -674,7 +696,7 @@ jQuery.extend({
xml.onreadystatechange = onreadystatechange; xml.onreadystatechange = onreadystatechange;
// Timeout checker // Timeout checker
if(jQuery.timeout > 0) if(timeout > 0)
setTimeout(function(){ setTimeout(function(){
// Check to see if the request is still happening // Check to see if the request is still happening
if (xml) { if (xml) {
@ -686,7 +708,7 @@ jQuery.extend({
// Clear from memory // Clear from memory
xml = null; xml = null;
} }
}, jQuery.timeout); }, timeout);
// Send the data // Send the data
xml.send(data); xml.send(data);