X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fxhr.js;h=0ff7665b2ddfa40c09fff70bbaf4e2d0b0d28368;hb=00fb8a9ad61eb6d13e6f6c7c668caa66074f05d1;hp=8c26bc8c176460b3e4105b61fa349bab57103124;hpb=5237b09602d5e360da361823748b0f34861b5a9a;p=jquery.git diff --git a/src/xhr.js b/src/xhr.js index 8c26bc8..0ff7665 100644 --- a/src/xhr.js +++ b/src/xhr.js @@ -231,7 +231,6 @@ jQuery.xhr = function( _native ) { oneConv, convertion, dataTypes = s.dataTypes, - dataCheckers = s.dataCheckers, dataConverters = s.dataConverters, dataFilter = s.dataFilter, responses = { @@ -243,51 +242,40 @@ jQuery.xhr = function( _native ) { current = dataTypes[ i ]; + if ( responses[ current ] ) { + xhr[ "response" + responses[ current ] ] = response; + responses[ current ] = 0; + } + if ( i ) { - prev = dataTypes[ i - 1 ]; - - if ( prev === "*" ) { - - prev = current; - - } else if ( current !== "*" && prev !== current ) { + if ( prev !== "*" && current !== "*" && prev !== current ) { oneConv = conv1 = dataConverters[ ( conversion = prev + " " + current ) ] || dataConverters[ "* " + current ]; - 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; + 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; + } } } - } - - checker = dataCheckers[ current ]; - - if ( response != null && checker ) { - checker( response ); - } - - if ( responses[ current ] ) { - xhr[ "response" + responses[ current ] ] = response; - responses[ current ] = 0; - } - - if ( ! i && dataFilter ) { - - response = dataFilter( response ); + } else if ( dataFilter ) { + response = s.dataFilter( response ); dataTypes = s.dataTypes; - dataFilter = 0; - i--; } + + prev = current; } // We have a real success