// 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
timeoutTimer,
// Cross-domain detection vars
loc = document.location,
+ protocol = loc.protocol || "http:",
parts,
// The jXHR state
state = 0,
parts = rurl.exec( s.url.toLowerCase() );
s.crossDomain = !!(
parts &&
- ( parts[ 1 ] && parts[ 1 ] != loc.protocol ||
+ ( parts[ 1 ] && parts[ 1 ] != protocol ||
parts[ 2 ] != loc.hostname ||
- ( parts[ 3 ] || 80 ) != ( loc.port || 80 ) )
+ ( parts[ 3 ] || ( ( parts[ 1 ] || protocol ) === "http:" ? 80 : 443 ) ) !=
+ ( loc.port || ( protocol === "http:" ? 80 : 443 ) ) )
);
}
}
// Get transport
- transport = jQuery.ajaxTransport( s );
+ transport = jQuery.ajaxTransport( s , options );
// If no transport, we auto-abort
if ( ! transport ) {
});
//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,
} 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)
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 ];
};
} );
-// 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 );