mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Enhances ajaxSetup so that it can take an optional target option, in which case target will be updated instead of ajaxSettings. That way, fields that shouldn't be deep extended can be listed and dealt with in one place. jQuery.ajax now makes use of ajaxSetup with target to create its internal settings object. Fixes #7531 in IE9RC.
This commit is contained in:
parent
081562cebc
commit
d4790116b8
34
src/ajax.js
34
src/ajax.js
@ -279,11 +279,27 @@ jQuery.extend({
|
|||||||
return jQuery.get( url, data, callback, "json" );
|
return jQuery.get( url, data, callback, "json" );
|
||||||
},
|
},
|
||||||
|
|
||||||
ajaxSetup: function( settings ) {
|
// Creates a full fledged settings object into target
|
||||||
jQuery.extend( true, jQuery.ajaxSettings, settings );
|
// with both ajaxSettings and settings fields.
|
||||||
if ( settings.context ) {
|
// If target is omitted, writes into ajaxSettings.
|
||||||
jQuery.ajaxSettings.context = settings.context;
|
ajaxSetup: function ( target, settings ) {
|
||||||
|
if ( !settings ) {
|
||||||
|
// Only one parameter, we extend ajaxSettings
|
||||||
|
settings = target;
|
||||||
|
target = jQuery.extend( true, jQuery.ajaxSettings, settings );
|
||||||
|
} else {
|
||||||
|
// target was provided, we extend into it
|
||||||
|
jQuery.extend( true, target, jQuery.ajaxSettings, settings );
|
||||||
}
|
}
|
||||||
|
// Flatten fields we don't want deep extended
|
||||||
|
for( var field in { context: 1, url: 1 } ) {
|
||||||
|
if ( field in settings ) {
|
||||||
|
target[ field ] = settings[ field ];
|
||||||
|
} else if( field in jQuery.ajaxSettings ) {
|
||||||
|
target[ field ] = jQuery.ajaxSettings[ field ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return target;
|
||||||
},
|
},
|
||||||
|
|
||||||
ajaxSettings: {
|
ajaxSettings: {
|
||||||
@ -360,13 +376,9 @@ jQuery.extend({
|
|||||||
options = options || {};
|
options = options || {};
|
||||||
|
|
||||||
var // Create the final options object
|
var // Create the final options object
|
||||||
s = jQuery.extend( true, {}, jQuery.ajaxSettings, options ),
|
s = jQuery.ajaxSetup( {}, options ),
|
||||||
// Callbacks context
|
// Callbacks context
|
||||||
// We force the original context if it exists
|
callbackContext = s.context || s,
|
||||||
// or take it from jQuery.ajaxSettings otherwise
|
|
||||||
// (plain objects used as context get extended)
|
|
||||||
callbackContext =
|
|
||||||
( s.context = ( "context" in options ? options : jQuery.ajaxSettings ).context ) || s,
|
|
||||||
// Context for global events
|
// Context for global events
|
||||||
// It's the callbackContext if one was provided in the options
|
// It's the callbackContext if one was provided in the options
|
||||||
// and if it's a DOM node or a jQuery collection
|
// and if it's a DOM node or a jQuery collection
|
||||||
@ -586,7 +598,7 @@ jQuery.extend({
|
|||||||
// Remove hash character (#7531: and string promotion)
|
// Remove hash character (#7531: and string promotion)
|
||||||
// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
|
// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
|
||||||
// We also use the url parameter if available
|
// We also use the url parameter if available
|
||||||
s.url = ( "" + ( url || s.url ) ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
|
s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
|
||||||
|
|
||||||
// Extract dataTypes list
|
// Extract dataTypes list
|
||||||
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
|
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
|
||||||
|
Loading…
Reference in New Issue
Block a user