X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=blobdiff_plain;f=src%2Fajax.js;h=86709005e0a0b7ce720d204acf34c9b140bb4176;hp=7c0e1018d7bd151536ad875463a0c6002d6ac76a;hb=eed3803c98bf5c074e40aad12f2e91435bf81154;hpb=2a5c16f217416a7cb5afce72a0f25c66d074fc0c diff --git a/src/ajax.js b/src/ajax.js index 7c0e101..8670900 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -107,9 +107,9 @@ jQuery.fn.extend({ null : jQuery.isArray(val) ? jQuery.map( val, function(val, i){ - return {name: elem.name, value: val}; + return {name: elem.name, value: val.replace(/\r?\n/g, "\r\n")}; }) : - {name: elem.name, value: val}; + {name: elem.name, value: val.replace(/\r?\n/g, "\r\n")}; }).get(); } }); @@ -183,7 +183,7 @@ jQuery.extend({ "*": "*/*" }, - autoDataType: { + contents: { xml: /xml/, html: /html/, json: /json/ @@ -208,7 +208,7 @@ jQuery.extend({ // List of data converters // 1) key format is "source_type destination_type" (a single space in-between) // 2) the catchall symbol "*" can be used for source_type - dataConverters: { + converters: { // Convert anything to text "* text": window.String, @@ -393,12 +393,12 @@ jQuery.extend({ current, prev, checker, + conv, conv1, conv2, - oneConv, convertion, dataTypes = s.dataTypes, - dataConverters = s.dataConverters, + converters = s.converters, responses = { "xml": "XML", "text": "Text" @@ -419,23 +419,28 @@ jQuery.extend({ if ( prev !== "*" && current !== "*" && prev !== current ) { - oneConv = conv1 = - dataConverters[ ( conversion = prev + " " + current ) ] || - dataConverters[ "* " + current ]; + conv = converters[ ( conversion = prev + " " + current ) ] || + converters[ "* " + current ]; - if ( oneConv !== true ) { - - if ( ! oneConv && prev !== "text" && current !== "text" ) { - conv1 = dataConverters[ prev + " text" ] || dataConverters[ "* text" ]; - conv2 = dataConverters[ "text " + current ]; - } - - if ( oneConv || conv1 && conv2 ) { - response = oneConv ? conv1( response ) : conv2( conv1( response ) ); - } else { - throw "no " + conversion; + conv1 = conv2 = 0; + + if ( ! conv && prev !== "text" && current !== "text" ) { + conv1 = converters[ prev + " text" ] || converters[ "* text" ]; + conv2 = converters[ "text " + current ]; + if ( conv1 === true ) { + conv = conv2; + } else if ( conv2 === true ) { + conv = conv1; } } + + if ( ! ( conv || conv1 && conv2 ) ) { + throw conversion; + } + + if ( conv !== true ) { + response = conv ? conv( response ) : conv2( conv1( response ) ); + } } } else if ( s.dataFilter ) { @@ -489,9 +494,10 @@ jQuery.extend({ } } - // Attach deferreds - jXHR.success = jXHR.then = deferred.then; - jXHR.error = jXHR.fail = deferred.fail; + // Attach deferreds + deferred.promise( jXHR ); + jXHR.success = jXHR.then; + jXHR.error = jXHR.fail; jXHR.complete = completeDeferred.then; // Remove hash character (#7531: and string promotion) @@ -841,7 +847,7 @@ jQuery.each( [ "prefilter" , "transport" ] , function( _ , name ) { // (for those transports that can give text or xml responses) function determineDataType( s , ct , text , xml ) { - var autoDataType = s.autoDataType, + var contents = s.contents, type, regexp, dataTypes = s.dataTypes, @@ -851,8 +857,8 @@ function determineDataType( s , ct , text , xml ) { // Auto (xml, json, script or text determined given headers) if ( transportDataType === "*" ) { - for ( type in autoDataType ) { - if ( ( regexp = autoDataType[ type ] ) && regexp.test( ct ) ) { + for ( type in contents ) { + if ( ( regexp = contents[ type ] ) && regexp.test( ct ) ) { transportDataType = dataTypes[0] = type; break; } @@ -871,7 +877,7 @@ function determineDataType( s , ct , text , xml ) { response = text; - // If it's not really text, defer to dataConverters + // If it's not really text, defer to converters if ( transportDataType !== "text" ) { dataTypes.unshift( "text" ); }