Moves determineDataType into ajaxSettings so that it is accessible to transports...
authorjaubourg <j@ubourg.net>
Wed, 19 Jan 2011 17:16:29 +0000 (18:16 +0100)
committerjaubourg <j@ubourg.net>
Wed, 19 Jan 2011 17:16:29 +0000 (18:16 +0100)
src/ajax.js
src/ajax/xhr.js

index 9173d8a..e5fb5c4 100644 (file)
@@ -229,7 +229,53 @@ jQuery.extend({
 
                        // Parse text as xml
                        "text xml": jQuery.parseXML
+               },
+
+               // Utility function that handles dataType when response is received
+               // (for those transports that can give text or xml responses)
+               determineDataType: function( ct , text , xml ) {
+
+                       var s = this,
+                               contents = s.contents,
+                               type,
+                               regexp,
+                               dataTypes = s.dataTypes,
+                               transportDataType = dataTypes[0],
+                               response;
+
+                       // Auto (xml, json, script or text determined given headers)
+                       if ( transportDataType === "*" ) {
+
+                               for ( type in contents ) {
+                                       if ( ( regexp = contents[ type ] ) && regexp.test( ct ) ) {
+                                               transportDataType = dataTypes[0] = type;
+                                               break;
+                                       }
+                               }
+                       }
+
+                       // xml and parsed as such
+                       if ( transportDataType === "xml" &&
+                               xml &&
+                               xml.documentElement /* #4958 */ ) {
+
+                               response = xml;
+
+                       // Text response was provided
+                       } else {
+
+                               response = text;
+
+                               // If it's not really text, defer to converters
+                               if ( transportDataType !== "text" ) {
+                                       dataTypes.unshift( "text" );
+                               }
+
+                       }
+
+                       return response;
                }
+
        },
 
        // Main method
@@ -670,7 +716,7 @@ jQuery.extend({
                        }
 
                        // Get transport
-                       transport = jQuery.ajaxTransport( s );
+                       transport = jQuery.ajaxTransport( s , options );
 
                        // If no transport, we auto-abort
                        if ( ! transport ) {
@@ -803,7 +849,7 @@ jQuery.extend({
 });
 
 //Execute or select from functions in a given structure of options
-function ajax_selectOrExecute( structure , s ) {
+function ajax_selectOrExecute( structure , s , options ) {
 
        var dataTypes = s.dataTypes,
                transportDataType,
@@ -841,7 +887,7 @@ function ajax_selectOrExecute( structure , s ) {
 
                } else {
 
-                       selected = list[ i ]( s , determineDataType );
+                       selected = list[ i ]( s , options );
 
                        // If we got redirected to another dataType
                        // Search there (if not in progress or already tried)
@@ -876,7 +922,7 @@ function ajax_addElement( structure , args ) {
                first = jQuery.type( args[ 0 ] );
 
                if ( first === "object" ) {
-                       return ajax_selectOrExecute( structure , args[ 0 ] );
+                       return ajax_selectOrExecute( structure , args[ 0 ] , args[ 1 ] );
                }
 
                structure = jQuery.ajaxSettings[ structure ];
@@ -924,48 +970,4 @@ jQuery.each( [ "Prefilter" , "Transport" ] , function( _ , name ) {
        };
 } );
 
-// Utility function that handles dataType when response is received
-// (for those transports that can give text or xml responses)
-function determineDataType( s , ct , text , xml ) {
-
-       var contents = s.contents,
-               type,
-               regexp,
-               dataTypes = s.dataTypes,
-               transportDataType = dataTypes[0],
-               response;
-
-       // Auto (xml, json, script or text determined given headers)
-       if ( transportDataType === "*" ) {
-
-               for ( type in contents ) {
-                       if ( ( regexp = contents[ type ] ) && regexp.test( ct ) ) {
-                               transportDataType = dataTypes[0] = type;
-                               break;
-                       }
-               }
-       }
-
-       // xml and parsed as such
-       if ( transportDataType === "xml" &&
-               xml &&
-               xml.documentElement /* #4958 */ ) {
-
-               response = xml;
-
-       // Text response was provided
-       } else {
-
-               response = text;
-
-               // If it's not really text, defer to converters
-               if ( transportDataType !== "text" ) {
-                       dataTypes.unshift( "text" );
-               }
-
-       }
-
-       return response;
-}
-
 })( jQuery );
index 0f30469..4acb700 100644 (file)
@@ -53,7 +53,7 @@ testXHR = undefined;
 
 // Create transport if the browser can provide an xhr
 if ( jQuery.support.ajax ) {
-       jQuery.ajaxTransport( function( s , determineDataType ) {
+       jQuery.ajaxTransport( function( s ) {
 
                // Cross domain only allowed if supported through XMLHttpRequest
                if ( ! s.crossDomain || jQuery.support.cors ) {
@@ -186,8 +186,7 @@ if ( jQuery.support.ajax ) {
 
                                                                // Guess response & update dataType accordingly
                                                                response =
-                                                                       determineDataType(
-                                                                               s,
+                                                                       s.determineDataType(
                                                                                xhr.getResponseHeader("content-type"),
                                                                                xhr.responseText,
                                                                                xhr.responseXML );