X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=ajax%2Fajax.js;h=5d6126af293db7f03d85e578be64d6bc9ed7cc1f;hb=73f55becc5e056ad28f6aec22ec014ffb3ab913b;hp=2586f3f8fe81f1e85c25fbec2ae828f7ae375ca4;hpb=6ae392a4e57834224b2a686d774ab210da25daa5;p=jquery.git diff --git a/ajax/ajax.js b/ajax/ajax.js index 2586f3f..5d6126a 100644 --- a/ajax/ajax.js +++ b/ajax/ajax.js @@ -83,7 +83,7 @@ if ( jQuery.browser == "msie" ) // Attach a bunch of functions for handling common AJAX events (function(){ - var e = "ajaxStart.ajaxComplete.ajaxError.ajaxSuccess".split(','); + var e = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess".split(','); for ( var i = 0; i < e.length; i++ ){ (function(){ var o = e[i]; @@ -105,6 +105,10 @@ jQuery.ajax = function( type, url, data, ret ) { url = type.url; type = type.type; } + + // Watch for a new set of requests + if ( ! jQuery.ajax.active++ ) + jQuery.event.trigger( "ajaxStart" ); // Create the request object var xml = new XMLHttpRequest(); @@ -125,23 +129,8 @@ jQuery.ajax = function( type, url, data, ret ) { // Wait for a response to come back xml.onreadystatechange = function(){ - // Socket is openend - if ( xml.readyState == 1 ) { - // Increase counter - jQuery.ajax.active++; - - // Show 'loader' - jQuery.event.trigger( "ajaxStart" ); - } - - // Socket is closed and data is available + // The transfer is complete and the data is available if ( xml.readyState == 4 ) { - // Hide loader if needed - if ( ! --jQuery.ajax.active ) { - jQuery.event.trigger( "ajaxComplete" ); - jQuery.ajax.active = 0 - } - // Make sure that the request was successful if ( jQuery.httpSuccess( xml ) ) { @@ -159,6 +148,13 @@ jQuery.ajax = function( type, url, data, ret ) { // Fire the global callback jQuery.event.trigger( "ajaxError" ); } + + // The request was completed + jQuery.event.trigger( "ajaxComplete" ); + + // Handle the global AJAX counter + if ( ! --jQuery.ajax.active ) + jQuery.event.trigger( "ajaxStop" ); // Process result if ( ret ) ret(xml);