X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax.js;h=39abe905940bbe760d4ba8057291912c03827ce3;hb=7c9a5e6016c2fcd38872367a891e5b3887d3df53;hp=d8af9387451139393745df54c7b843c43e2cd557;hpb=7d75ea950ea31a6734dc42e2037742b0c6719e8a;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index d8af938..39abe90 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -48,7 +48,7 @@ function addToPrefiltersOrTransports( structure ) { } if ( jQuery.isFunction( func ) ) { - var dataTypes = dataTypeExpression.split( rspacesAjax ), + var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ), i = 0, length = dataTypes.length, dataType, @@ -62,7 +62,7 @@ function addToPrefiltersOrTransports( structure ) { // any existing element placeBefore = /^\+/.test( dataType ); if ( placeBefore ) { - dataType = dataType.substr( 1 ); + dataType = dataType.substr( 1 ) || "*"; } list = structure[ dataType ] = structure[ dataType ] || []; // then we add to the structure accordingly @@ -334,13 +334,17 @@ jQuery.extend({ var // Create the final options object s = jQuery.extend( true, {}, jQuery.ajaxSettings, options ), - // Callbacks contexts + // Callbacks context // We force the original context if it exists // 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, - globalEventContext = callbackContext === s ? jQuery.event : jQuery( callbackContext ), + // Context for global events + // It's the callbackContext if one was provided in the options + // and if it's a DOM node + globalEventContext = callbackContext !== s && callbackContext.nodeType ? + jQuery( callbackContext ) : jQuery.event, // Deferreds deferred = jQuery.Deferred(), completeDeferred = jQuery._Deferred(), @@ -472,7 +476,7 @@ jQuery.extend({ } catch(e) { // We have a parsererror statusText = "parsererror"; - error = "" + e; + error = e; } } } else { @@ -662,7 +666,7 @@ jQuery.extend({ } catch (e) { // Propagate exception as error if not done if ( status < 2 ) { - done( -1, "" + e ); + done( -1, e ); // Simply rethrow otherwise } else { jQuery.error( e ); @@ -736,9 +740,9 @@ function buildParams( prefix, obj, traditional, add ) { // Serialize object item. } else { - jQuery.each( obj, function( k, v ) { - buildParams( prefix + "[" + k + "]", v, traditional, add ); - }); + for ( var name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } } } else { @@ -838,8 +842,9 @@ function ajaxConvert( s, response ) { } var dataTypes = s.dataTypes, - converters = s.converters, + converters = {}, i, + key, length = dataTypes.length, tmp, // Current and previous dataTypes @@ -849,13 +854,23 @@ function ajaxConvert( s, response ) { conversion, // Conversion function conv, - // Conversion functions (when text is used in-between) + // Conversion functions (transitive conversion) conv1, conv2; // For each dataType in the chain for( i = 1; i < length; i++ ) { + // Create converters map + // with lowercased keys + if ( i === 1 ) { + for( key in s.converters ) { + if( typeof key === "string" ) { + converters[ key.toLowerCase() ] = s.converters[ key ]; + } + } + } + // Get the dataTypes prev = current; current = dataTypes[ i ];