X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax.js;h=645163ad20249eebdc1c31b6d5a102f606228692;hb=52a02383fa521c51d9996a46f03a7080dd825f11;hp=c2dc3e404dc37e9caf734bc9b120e5b069f61a9c;hpb=b07d43c649240a78f5e832e2825db3af87357932;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index c2dc3e4..645163a 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -161,6 +161,7 @@ jQuery.extend({ ajaxSetup: function( settings ) { jQuery.extend( true, jQuery.ajaxSettings, settings ); + return this; }, ajaxSettings: { @@ -265,6 +266,8 @@ jQuery.extend({ // Deferreds deferred = jQuery.Deferred(), completeDeferred = jQuery._Deferred(), + // Status-dependent callbacks + statusCode = s.statusCode || {}, // Headers (they are sent all at once) requestHeaders = {}, // Response headers @@ -520,6 +523,9 @@ jQuery.extend({ deferred.fireReject( callbackContext , [ jXHR , statusText , error ] ); } + // Status-dependent callbacks + jXHR.statusCode( statusCode ); + if ( s.global ) { globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ) , [ jXHR , s , isSuccess ? success : error ] ); @@ -543,6 +549,28 @@ jQuery.extend({ jXHR.error = jXHR.fail; jXHR.complete = completeDeferred.done; + // Status-dependent callbacks + jXHR.statusCode = function( map ) { + if ( map ) { + var resolved = jXHR.isResolved(), + tmp; + if ( resolved || jXHR.isRejected() ) { + tmp = map[ jXHR.status ]; + if ( tmp ) { + if ( map === statusCode ) { + delete statusCode[ jXHR.status ]; + } + jXHR[ resolved ? "done" : "fail" ]( tmp ); + } + } else { + for( tmp in map ) { + statusCode[ tmp ] = [ statusCode[ tmp ] , map[ tmp ] ]; + } + } + } + return this; + }; + // Remove hash character (#7531: and string promotion) s.url = ( "" + s.url ).replace( rhash , "" ); @@ -572,7 +600,7 @@ jQuery.extend({ } // Get transport - transport = jQuery.ajax.prefilter( s , options ).transport( s ); + transport = jQuery.ajaxPrefilter( s , options ).ajaxTransport( s ); // Watch for a new set of requests if ( s.global && jQuery.active++ === 0 ) { @@ -822,7 +850,7 @@ function ajax_selectOrExecute( structure , s ) { } } - return noSelect ? jQuery.ajax : selected; + return noSelect ? jQuery : selected; } // Add an element to one of the structures in ajaxSettings @@ -881,13 +909,13 @@ function ajax_addElement( structure , args ) { } } - return jQuery.ajax; + return jQuery; } // Install prefilter & transport methods -jQuery.each( [ "prefilter" , "transport" ] , function( _ , name ) { - _ = name + "s"; - jQuery.ajax[ name ] = function() { +jQuery.each( [ "Prefilter" , "Transport" ] , function( _ , name ) { + _ = name.toLowerCase() + "s"; + jQuery[ "ajax" + name ] = function() { return ajax_addElement( _ , arguments ); }; } );