Removes unnecessary test and ensures getResponseHeader returns null if the header...
[jquery.git] / src / ajax.js
index 43bab7c..3d1f9a3 100644 (file)
@@ -233,8 +233,7 @@ jQuery.extend({
        },
 
        // Main method
-       // (s is used internally)
-       ajax: function( url , options , s ) {
+       ajax: function( url , options ) {
 
                // Handle varargs
                if ( arguments.length === 1 ) {
@@ -248,19 +247,14 @@ jQuery.extend({
                // Get the url if provided separately
                options.url = url || options.url;
 
-               // Create the final options object
-               s = jQuery.extend( true , {} , jQuery.ajaxSettings , options );
-
-               // We force the original context
-               // (plain objects used as context get extended)
-               s.context = options.context;
-
-               var // jQuery lists
+               var // Create the final options object
+                       s = jQuery.extend( true , {} , jQuery.ajaxSettings , options ),
+                       // jQuery lists
                        jQuery_lastModified = jQuery.lastModified,
                        jQuery_etag = jQuery.etag,
                        // Callbacks contexts
-                       callbackContext = s.context || s,
-                       globalEventContext = s.context ? jQuery( s.context ) : jQuery.event,
+                       callbackContext = options.context || s.context || s,
+                       globalEventContext = callbackContext === s ? jQuery.event : jQuery( callbackContext ),
                        // Deferreds
                        deferred = jQuery.Deferred(),
                        completeDeferred = jQuery._Deferred(),
@@ -301,30 +295,25 @@ jQuery.extend({
                                },
 
                                // Builds headers hashtable if needed
-                               // (match is used internally)
-                               getResponseHeader: function( key , match ) {
+                               getResponseHeader: function( key ) {
+
+                                       var match;
 
                                        if ( state === 2 ) {
 
-                                               if ( responseHeaders === undefined ) {
+                                               if ( !responseHeaders ) {
 
                                                        responseHeaders = {};
 
-                                                       if ( typeof responseHeadersString === "string" ) {
-
-                                                               while( ( match = rheaders.exec( responseHeadersString ) ) ) {
-                                                                       responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
-                                                               }
+                                                       while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+                                                               responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
                                                        }
                                                }
                                                match = responseHeaders[ key.toLowerCase() ];
 
-                                       } else {
-
-                                               match = null;
                                        }
 
-                                       return match;
+                                       return match || null;
                                },
 
                                // Cancel the request
@@ -337,6 +326,10 @@ jQuery.extend({
                                }
                        };
 
+               // We force the original context
+               // (plain objects used as context get extended)
+               s.context = options.context;
+
                // Callback for when everything is done
                // It is defined here because jslint complains if it is declared
                // at the end of the function (which would be more logical and readable)