From 3c6f1380fa67542ff8c67d6363a865ae3ec23516 Mon Sep 17 00:00:00 2001 From: jaubourg Date: Wed, 29 Dec 2010 18:44:45 +0100 Subject: [PATCH] Revised conversion logic to handle converter equal to true properly. --- src/ajax.js | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/ajax.js b/src/ajax.js index 0fca962a..5e58a0fa 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -393,9 +393,9 @@ jQuery.extend({ current, prev, checker, + conv, conv1, conv2, - oneConv, convertion, dataTypes = s.dataTypes, converters = s.converters, @@ -419,23 +419,28 @@ jQuery.extend({ if ( prev !== "*" && current !== "*" && prev !== current ) { - oneConv = conv1 = - converters[ ( conversion = prev + " " + current ) ] || + conv = converters[ ( conversion = prev + " " + current ) ] || converters[ "* " + current ]; - if ( oneConv !== true ) { - - if ( ! oneConv && prev !== "text" && current !== "text" ) { - conv1 = converters[ prev + " text" ] || converters[ "* text" ]; - conv2 = converters[ "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 ) {