Added tests for global and local ajax handlers, added global option to $.ajax to allow suppressing of global events
This commit is contained in:
parent
47200bc76f
commit
7dd456176d
|
@ -199,6 +199,46 @@ if ( jQuery.browser.msie && typeof XMLHttpRequest == "undefined" )
|
||||||
* @cat AJAX
|
* @cat AJAX
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test stop(); var counter = { complete: 0, success: 0, error: 0 };
|
||||||
|
* var success = function() { counter.success++ };
|
||||||
|
* var error = function() { counter.error++ };
|
||||||
|
* var complete = function() { counter.complete++ };
|
||||||
|
* $('#foo').ajaxStart(complete).ajaxStop(complete).ajaxComplete(complete).ajaxError(error).ajaxSuccess(success);
|
||||||
|
* // start with successful test
|
||||||
|
* $.ajax({url: "data/name.php", success: success, error: error, complete: function() {
|
||||||
|
* ok( counter.error == 0, 'Check succesful request' );
|
||||||
|
* ok( counter.success == 2, 'Check succesful request' );
|
||||||
|
* ok( counter.complete == 3, 'Check succesful request' );
|
||||||
|
* counter.error = 0; counter.success = 0; counter.complete = 0;
|
||||||
|
* $.ajaxTimeout(500);
|
||||||
|
* $.ajax({url: "data/name.php?wait=5", success: success, error: error, complete: function() {
|
||||||
|
* ok( counter.error == 2, 'Check failed request' );
|
||||||
|
* ok( counter.success == 0, 'Check failed request' );
|
||||||
|
* ok( counter.complete == 3, 'Check failed request' );
|
||||||
|
* counter.error = 0; counter.success = 0; counter.complete = 0;
|
||||||
|
* $.ajaxTimeout(0);
|
||||||
|
* $.ajax({url: "data/name.php?wait=5", global: false, success: success, error: error, complete: function() {
|
||||||
|
* ok( counter.error == 0, 'Check sucesful request without globals' );
|
||||||
|
* ok( counter.success == 1, 'Check sucesful request without globals' );
|
||||||
|
* ok( counter.complete == 0, 'Check sucesful request without globals' );
|
||||||
|
* counter.error = 0; counter.success = 0; counter.complete = 0;
|
||||||
|
* $.ajaxTimeout(500);
|
||||||
|
* $.ajax({url: "data/name.php?wait=5", global: false, success: success, error: error, complete: function() {
|
||||||
|
* ok( counter.error == 1, 'Check failedrequest without globals' );
|
||||||
|
* ok( counter.success == 0, 'Check failed request without globals' );
|
||||||
|
* ok( counter.complete == 0, 'Check failed request without globals' );
|
||||||
|
* start();
|
||||||
|
* }});
|
||||||
|
* }});
|
||||||
|
* }});
|
||||||
|
* }});
|
||||||
|
*
|
||||||
|
* @name ajaxHandlersTesting
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
new function(){
|
new function(){
|
||||||
var e = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess".split(",");
|
var e = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess".split(",");
|
||||||
|
|
||||||
|
@ -286,6 +326,12 @@ jQuery.extend({
|
||||||
* }
|
* }
|
||||||
* )
|
* )
|
||||||
*
|
*
|
||||||
|
* @test stop();
|
||||||
|
* $.getIfModified("data/name.php", function(msg) {
|
||||||
|
* ok( msg == 'ERROR', 'Check ifModified' );
|
||||||
|
* start();
|
||||||
|
* });
|
||||||
|
*
|
||||||
* @name $.getIfModified
|
* @name $.getIfModified
|
||||||
* @type jQuery
|
* @type jQuery
|
||||||
* @param String url The URL of the page to load.
|
* @param String url The URL of the page to load.
|
||||||
|
@ -433,8 +479,7 @@ jQuery.extend({
|
||||||
* start();
|
* start();
|
||||||
* }
|
* }
|
||||||
* };
|
* };
|
||||||
* var fail = function(ba) {
|
* var fail = function() {
|
||||||
* console.debug(ba);
|
|
||||||
* ok( false, 'Check for timeout failed' );
|
* ok( false, 'Check for timeout failed' );
|
||||||
* start();
|
* start();
|
||||||
* };
|
* };
|
||||||
|
@ -475,6 +520,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").
|
||||||
*
|
*
|
||||||
|
* (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.
|
||||||
|
*
|
||||||
* (Function) error - A function to be called if the request fails. The
|
* (Function) error - A function to be called if the request fails. The
|
||||||
* function gets passed two arguments: The XMLHttpRequest object and a
|
* function gets passed two arguments: The XMLHttpRequest object and a
|
||||||
* string describing the type of error that occurred.
|
* string describing the type of error that occurred.
|
||||||
|
@ -538,13 +587,14 @@ jQuery.extend({
|
||||||
var success = type.success;
|
var success = type.success;
|
||||||
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;
|
||||||
data = type.data;
|
data = type.data;
|
||||||
url = type.url;
|
url = type.url;
|
||||||
type = type.type;
|
type = type.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Watch for a new set of requests
|
// Watch for a new set of requests
|
||||||
if ( ! jQuery.active++ )
|
if ( global && ! jQuery.active++ )
|
||||||
jQuery.event.trigger( "ajaxStart" );
|
jQuery.event.trigger( "ajaxStart" );
|
||||||
|
|
||||||
var requestDone = false;
|
var requestDone = false;
|
||||||
|
@ -591,7 +641,8 @@ jQuery.extend({
|
||||||
success( jQuery.httpData( xml, dataType ), status );
|
success( jQuery.httpData( xml, dataType ), status );
|
||||||
|
|
||||||
// Fire the global callback
|
// Fire the global callback
|
||||||
jQuery.event.trigger( "ajaxSuccess" );
|
if( global )
|
||||||
|
jQuery.event.trigger( "ajaxSuccess" );
|
||||||
|
|
||||||
// Otherwise, the request was not successful
|
// Otherwise, the request was not successful
|
||||||
} else {
|
} else {
|
||||||
|
@ -599,14 +650,16 @@ jQuery.extend({
|
||||||
if ( error ) error( xml, status );
|
if ( error ) error( xml, status );
|
||||||
|
|
||||||
// Fire the global callback
|
// Fire the global callback
|
||||||
jQuery.event.trigger( "ajaxError" );
|
if( global )
|
||||||
|
jQuery.event.trigger( "ajaxError" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// The request was completed
|
// The request was completed
|
||||||
jQuery.event.trigger( "ajaxComplete" );
|
if( global )
|
||||||
|
jQuery.event.trigger( "ajaxComplete" );
|
||||||
|
|
||||||
// Handle the global AJAX counter
|
// Handle the global AJAX counter
|
||||||
if ( ! --jQuery.active )
|
if ( global && ! --jQuery.active )
|
||||||
jQuery.event.trigger( "ajaxStop" );
|
jQuery.event.trigger( "ajaxStop" );
|
||||||
|
|
||||||
// Process result
|
// Process result
|
||||||
|
|
Loading…
Reference in a new issue