aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaubourg <j@ubourg.net>2011-01-19 18:16:29 +0100
committerjaubourg <j@ubourg.net>2011-01-19 18:16:29 +0100
commit1cecfa1ece0d48b253fb0775bba645c464e363a4 (patch)
treed70fe68a20c78ffd24b320fea67fc12606f4c87f
parent3ea366401f461cd670c5472ddbb3ad7f3260d13c (diff)
downloadjquery-1cecfa1ece0d48b253fb0775bba645c464e363a4.tar.gz
jquery-1cecfa1ece0d48b253fb0775bba645c464e363a4.zip
Moves determineDataType into ajaxSettings so that it is accessible to transports without the need for a second argument and so that we can now pass the original options to the transport instead. Also ensures the original options are actually propagated to prefilters (they were not).
-rw-r--r--src/ajax.js98
-rw-r--r--src/ajax/xhr.js5
2 files changed, 52 insertions, 51 deletions
diff --git a/src/ajax.js b/src/ajax.js
index 9173d8a89..e5fb5c4bc 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -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 );
diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js
index 0f30469d6..4acb70054 100644
--- a/src/ajax/xhr.js
+++ b/src/ajax/xhr.js
@@ -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 );