Rewrote $.xml a bit, cause the loading message got stuck (didn't hide) after fast ajax calls

This commit is contained in:
Gilles van den Hoven 2006-05-20 09:46:41 +00:00
parent 81fda970ff
commit d8bad24d34

View File

@ -9,7 +9,6 @@ if ( typeof XMLHttpRequest == 'undefined' && typeof window.ActiveXObject == 'fun
}; };
} }
//
// Counter for holding the active query's // Counter for holding the active query's
$.xmlActive=0; $.xmlActive=0;
@ -17,25 +16,11 @@ $.xml = function( type, url, data, ret ) {
var xml = new XMLHttpRequest(); var xml = new XMLHttpRequest();
if ( xml ) { if ( xml ) {
//
// Increase the query counter
$.xmlActive++;
//
// Show loader if needed
if ($.xmlCreate) {
$.xmlCreate();
}
//
// Open the socket // Open the socket
xml.open(type || "GET", url, true); xml.open(type || "GET", url, true);
if ( data )
if ( data ) {
xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
//
// Set header so calling script knows that it's an XMLHttpRequest // Set header so calling script knows that it's an XMLHttpRequest
xml.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xml.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
@ -43,29 +28,38 @@ $.xml = function( type, url, data, ret ) {
* a bug where XMLHttpReqeuest sends an incorrect Content-length * a bug where XMLHttpReqeuest sends an incorrect Content-length
* header. See Mozilla Bugzilla #246651. * header. See Mozilla Bugzilla #246651.
*/ */
if ( xml.overrideMimeType ) { if ( xml.overrideMimeType )
xml.setRequestHeader('Connection', 'close'); xml.setRequestHeader('Connection', 'close');
}
xml.onreadystatechange = function() { xml.onreadystatechange = function() {
if ( xml.readyState == 4 ) { // Socket is openend
if ( ret ) { ret(xml); } if ( xml.readyState == 1 ) {
// Increase counter
$.xmlActive++;
// // Show loader if needed
if ( ($.xmlActive >= 1) && ($.xmlCreate) )
$.xmlCreate();
}
// Socket is closed and data is available
if ( xml.readyState == 4 ) {
// Decrease counter // Decrease counter
$.xmlActive--; $.xmlActive--;
//
// Hide loader if needed // Hide loader if needed
if ($.xmlActive <= 0) { if ( ($.xmlActive <= 0) && ($.xmlDestroy) ) {
if ($.xmlDestroy) { $.xmlDestroy();
$.xmlDestroy(); $.xmlActive = 0
}
} }
// Process result
if ( ret )
ret(xml);
} }
}; };
xml.send(data); xml.send(data)
} }
}; };