X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax.js;h=a92522f5b893c1d2b3d9a106271f649b87f2b27c;hb=ea5ce8c2a916ad44af21411d6e2b21ab9f6863f0;hp=63914d23a7aa876499b87be16ea6c1ccec1f0a40;hpb=9ab00a712fe3757f130dce8b42293c82a68c690e;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index 63914d2..a92522f 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -235,7 +235,7 @@ jQuery.extend({ // Utility function that handles dataType when response is received // (for those transports that can give text or xml responses) - determineDataType: function( ct , text , xml ) { + determineResponse: function( responses , ct ) { var s = this, contents = s.contents, @@ -246,7 +246,7 @@ jQuery.extend({ response; // Auto (xml, json, script or text determined given headers) - if ( transportDataType === "*" ) { + if ( ct && transportDataType === "*" ) { for ( type in contents ) { if ( ( regexp = contents[ type ] ) && regexp.test( ct ) ) { @@ -256,23 +256,22 @@ jQuery.extend({ } } - // xml and parsed as such - if ( transportDataType === "xml" && - xml && - xml.documentElement /* #4958 */ ) { - - response = xml; - - // Text response was provided - } else { + // Get response + for( type in responses ) { + if ( type === transportDataType ) { + break; + } + } - response = text; + // Get final response + response = responses[ type ]; - // If it's not really text, defer to converters - if ( transportDataType !== "text" ) { - dataTypes.unshift( "text" ); + // If it's not the right dataType, handle the dataTypeList + if ( transportDataType !== type ) { + if ( transportDataType === "*" ) { + dataTypes.shift(); } - + dataTypes.unshift( type ); } return response; @@ -291,18 +290,16 @@ jQuery.extend({ // Main method ajax: function( url , options ) { - // Handle varargs - if ( arguments.length === 1 ) { + // If options is not an object, + // we simulate pre-1.5 signature + if ( typeof( options ) !== "object" ) { options = url; - url = options ? options.url : undefined; + url = undefined; } // Force options to be an object options = options || {}; - // Get the url if provided separately - options.url = url || options.url; - var // Create the final options object s = jQuery.extend( true , {} , jQuery.ajaxSettings , options ), // jQuery lists @@ -580,9 +577,9 @@ jQuery.extend({ // Success/Error if ( isSuccess ) { - deferred.fire( callbackContext , [ success , statusText , jXHR ] ); + deferred.resolveWith( callbackContext , [ success , statusText , jXHR ] ); } else { - deferred.fireReject( callbackContext , [ jXHR , statusText , error ] ); + deferred.rejectWith( callbackContext , [ jXHR , statusText , error ] ); } // Status-dependent callbacks @@ -596,7 +593,7 @@ jQuery.extend({ } // Complete - completeDeferred.fire( callbackContext, [ jXHR , statusText ] ); + completeDeferred.resolveWith( callbackContext, [ jXHR , statusText ] ); if ( s.global ) { globalEventContext.trigger( "ajaxComplete" , [ jXHR , s] ); @@ -630,7 +627,8 @@ jQuery.extend({ }; // Remove hash character (#7531: and string promotion) - s.url = ( "" + s.url ).replace( rhash , "" ); + // We also use the url parameter if available + s.url = ( "" + ( url || s.url ) ).replace( rhash , "" ); // Extract dataTypes list s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( /\s+/ );