Moved jQuery.ajax.prefilter and jQuery.ajax.transport to jQuery.ajaxPrefilter and...
[jquery.git] / src / ajax.js
index c2dc3e4..645163a 100644 (file)
@@ -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 );
        };
 } );