X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax.js;h=52a5a22cc3187a68c40728e81f53191618cc6b75;hb=bca576550249e9b79b1097669dff6d4ddd0d65cf;hp=360c87c4a7289fd1efc9117e8bbc25169ca10db6;hpb=dcf0fa5048ef2379d551f29ffa29b14ec5ee09d5;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index 360c87c..52a5a22 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -1,4 +1,6 @@ -var jsc = now(), +(function( jQuery ) { + +var jsc = jQuery.now(), rscript = //gi, rselectTextarea = /select|textarea/i, rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i, @@ -83,6 +85,7 @@ jQuery.fn.extend({ serialize: function() { return jQuery.param(this.serializeArray()); }, + serializeArray: function() { return this.map(function() { return this.elements ? jQuery.makeArray(this.elements) : this; @@ -114,7 +117,6 @@ jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".sp }); jQuery.extend({ - get: function( url, data, callback, type ) { // shift arguments if data argument was omited if ( jQuery.isFunction( data ) ) { @@ -198,10 +200,6 @@ jQuery.extend({ } }, - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - ajax: function( origSettings ) { var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings), jsonp, status, data, type = s.type.toUpperCase(); @@ -241,17 +239,25 @@ jQuery.extend({ s.dataType = "script"; // Handle JSONP-style loading - window[ jsonp ] = window[ jsonp ] || function( tmp ) { + var customJsonp = window[ jsonp ]; + + window[ jsonp ] = function( tmp ) { data = tmp; jQuery.ajax.handleSuccess( s, xhr, status, data ); jQuery.ajax.handleComplete( s, xhr, status, data ); - // Garbage collect - window[ jsonp ] = undefined; + + if ( jQuery.isFunction( customJsonp ) ) { + customJsonp( tmp ); - try { - delete window[ jsonp ]; - } catch( jsonpError ) {} + } else { + // Garbage collect + window[ jsonp ] = undefined; + try { + delete window[ jsonp ]; + } catch( jsonpError ) {} + } + if ( head ) { head.removeChild( script ); } @@ -263,7 +269,7 @@ jQuery.extend({ } if ( s.cache === false && type === "GET" ) { - var ts = now(); + var ts = jQuery.now(); // try replacing _= if it is there var ret = s.url.replace(rts, "$1_=" + ts + "$2"); @@ -355,8 +361,8 @@ jQuery.extend({ xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]); } - if ( jQuery.etag[s.url] ) { - xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]); + if ( jQuery.ajax.etag[s.url] ) { + xhr.setRequestHeader("If-None-Match", jQuery.ajax.etag[s.url]); } } @@ -440,7 +446,9 @@ jQuery.extend({ } // Fire the complete handlers - jQuery.ajax.handleComplete( s, xhr, status, data ); + if ( !jsonp ) { + jQuery.ajax.handleComplete( s, xhr, status, data ); + } if ( isTimeout === "timeout" ) { xhr.abort(); @@ -478,7 +486,7 @@ jQuery.extend({ // Send the data try { - xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null ); + xhr.send( (type !== "GET" && s.data) || null ); } catch( sendError ) { jQuery.ajax.handleError( s, xhr, null, e ); @@ -567,6 +575,10 @@ jQuery.extend( jQuery.ajax, { // Counter for holding the number of active queries active: 0, + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + handleError: function( s, xhr, status, e ) { // If a local callback was specified, fire it if ( s.error ) { @@ -631,11 +643,11 @@ jQuery.extend( jQuery.ajax, { etag = xhr.getResponseHeader("Etag"); if ( lastModified ) { - jQuery.lastModified[url] = lastModified; + jQuery.ajax.lastModified[url] = lastModified; } if ( etag ) { - jQuery.etag[url] = etag; + jQuery.ajax.etag[url] = etag; } // Opera returns 0 when status is 304 @@ -673,3 +685,8 @@ jQuery.extend( jQuery.ajax, { } }); + +// For backwards compatibility +jQuery.extend( jQuery.ajax ); + +})( jQuery );