headers: {},
crossDomain: null,
*/
- xhr: function() {
- return new window.XMLHttpRequest();
- },
accepts: {
xml: "application/xml, text/xml",
},
// Main method
- // (s is used internally)
- ajax: function( url , options , s ) {
+ ajax: function( url , options ) {
// Handle varargs
if ( arguments.length === 1 ) {
// 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(),
},
// 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
}
};
+ // 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)
// Remove hash character (#7531: and string promotion)
s.url = ( "" + s.url ).replace( rhash , "" );
- // Uppercase the type
- s.type = s.type.toUpperCase();
-
- // Determine if request has content
- s.hasContent = ! rnoContent.test( s.type );
-
// Extract dataTypes list
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( /\s+/ );
}
// Convert data if not already a string
- if ( s.data && s.processData && typeof s.data != "string" ) {
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
s.data = jQuery.param( s.data , s.traditional );
}
// Apply prefilters
jQuery.ajaxPrefilter( s , options );
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = ! rnoContent.test( s.type );
+
// Watch for a new set of requests
if ( s.global && jQuery.active++ === 0 ) {
jQuery.event.trigger( "ajaxStart" );
return response;
}
-/*
- * Create the request object; Microsoft failed to properly
- * implement the XMLHttpRequest in IE7 (can't request local files),
- * so we use the ActiveXObject when it is available
- * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
- * we need a fallback.
- */
-if ( window.ActiveXObject ) {
- jQuery.ajaxSettings.xhr = function() {
- if ( window.location.protocol !== "file:" ) {
- try {
- return new window.XMLHttpRequest();
- } catch( xhrError ) {}
- }
-
- try {
- return new window.ActiveXObject("Microsoft.XMLHTTP");
- } catch( activeError ) {}
- };
-}
-
-var testXHR = jQuery.ajaxSettings.xhr();
-
-// Does this browser support XHR requests?
-jQuery.support.ajax = !!testXHR;
-
-// Does this browser support crossDomain XHR requests
-jQuery.support.cors = testXHR && "withCredentials" in testXHR;
-
})( jQuery );