From d8bad24d34b1d11893555ce35707cd2716d49adc Mon Sep 17 00:00:00 2001 From: Gilles van den Hoven Date: Sat, 20 May 2006 09:46:41 +0000 Subject: [PATCH] Rewrote $.xml a bit, cause the loading message got stuck (didn't hide) after fast ajax calls --- ajax/ajax.js | 48 +++++++++++++++++++++--------------------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/ajax/ajax.js b/ajax/ajax.js index ef7240f4..fef1e22b 100644 --- a/ajax/ajax.js +++ b/ajax/ajax.js @@ -9,7 +9,6 @@ if ( typeof XMLHttpRequest == 'undefined' && typeof window.ActiveXObject == 'fun }; } -// // Counter for holding the active query's $.xmlActive=0; @@ -17,25 +16,11 @@ $.xml = function( type, url, data, ret ) { var xml = new XMLHttpRequest(); if ( xml ) { - // - // Increase the query counter - $.xmlActive++; - - // - // Show loader if needed - if ($.xmlCreate) { - $.xmlCreate(); - } - - // // Open the socket xml.open(type || "GET", url, true); - - if ( data ) { + if ( data ) xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - } - // // Set header so calling script knows that it's an 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 * header. See Mozilla Bugzilla #246651. */ - if ( xml.overrideMimeType ) { + if ( xml.overrideMimeType ) xml.setRequestHeader('Connection', 'close'); - } xml.onreadystatechange = function() { - if ( xml.readyState == 4 ) { - if ( ret ) { ret(xml); } + // Socket is openend + 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 $.xmlActive--; - // // Hide loader if needed - if ($.xmlActive <= 0) { - if ($.xmlDestroy) { - $.xmlDestroy(); - } + if ( ($.xmlActive <= 0) && ($.xmlDestroy) ) { + $.xmlDestroy(); + $.xmlActive = 0 } + + // Process result + if ( ret ) + ret(xml); } }; - xml.send(data); + xml.send(data) } };