X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax%2Fxhr.js;h=34aa832fea3c8cf1ba254bda28e556d0176a9c06;hb=a8fa5f2ec1030bceb9a65d0237f0c92ae4e014dd;hp=3c3d12493f74f7d222fd7fe935a7dcb829e88bb6;hpb=667a3b31e6a27cfe3f209765d583bff584ecc2f6;p=jquery.git diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js index 3c3d124..34aa832 100644 --- a/src/ajax/xhr.js +++ b/src/ajax/xhr.js @@ -1,19 +1,16 @@ (function( jQuery ) { -var // Next fake timer id - xhrPollingId = jQuery.now(), +var // Next active xhr id + xhrId = jQuery.now(), - // Callbacks hashtable + // active xhrs xhrs = {}, - // XHR pool - xhrPool = [], - // #5280: see below xhrUnloadAbortInstalled; -jQuery.ajax.transport( function( s , determineDataType ) { +jQuery.ajaxTransport( function( s , determineDataType ) { // Cross domain only allowed if supported through XMLHttpRequest if ( ! s.crossDomain || jQuery.support.cors ) { @@ -42,7 +39,7 @@ jQuery.ajax.transport( function( s , determineDataType ) { } // Get a new xhr - var xhr = xhrPool.pop() || s.xhr(), + var xhr = s.xhr(), handle; // Open the socket @@ -74,14 +71,12 @@ jQuery.ajax.transport( function( s , determineDataType ) { try { xhr.send( ( s.hasContent && s.data ) || null ); } catch(e) { - // Store back into pool - xhrPool.push( xhr ); complete(0, "error", "" + e); return; } // Listener - callback = function( isAbort ) { + callback = function( _ , isAbort ) { // Was never called and is aborted or complete if ( callback && ( isAbort || xhr.readyState === 4 ) ) { @@ -94,8 +89,6 @@ jQuery.ajax.transport( function( s , determineDataType ) { if (handle) { xhr.onreadystatechange = jQuery.noop; delete xhrs[ handle ]; - handle = undefined; - xhrPool.push( xhr ); } // If it's an abort @@ -171,18 +164,16 @@ jQuery.ajax.transport( function( s , determineDataType ) { } else { - // Listener is externalized to handle abort on unload - handle = xhrPollingId++; + // Add to list of active xhrs + handle = xhrId++; xhrs[ handle ] = xhr; - xhr.onreadystatechange = function() { - callback(); - }; + xhr.onreadystatechange = callback; } }, abort: function() { if ( callback ) { - callback(1); + callback(0,1); } } };