From 6f53be1839b10486c624e07595533d57c602eda5 Mon Sep 17 00:00:00 2001 From: jaubourg Date: Sat, 25 Dec 2010 15:38:33 +0100 Subject: [PATCH] Removed dataCheckers, added true as possible value for dataConverters indicating dataType equivalence (ie. no conversion has to be performed). --- src/ajax.js | 29 ++--------------------------- src/xhr.js | 56 ++++++++++++++++++++++---------------------------------- 2 files changed, 24 insertions(+), 61 deletions(-) diff --git a/src/ajax.js b/src/ajax.js index 4f1fc6c..27e8a1f 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -197,31 +197,6 @@ jQuery.extend({ // 3) selection will start with transport dataType and THEN go to "*" if needed transports: {}, - // Checkers - // 1) key is dataType - // 2) they are called to control successful response - // 3) error throws is used as error data - dataCheckers: { - - // Check if data is a string - "text": function(data) { - if ( typeof data != "string" ) { - jQuery.error("typeerror"); - } - }, - - // Check if xml has been properly parsed - "xml": function(data) { - var documentElement = data ? data.documentElement : data; - if ( ! documentElement || ! documentElement.nodeName ) { - jQuery.error("typeerror"); - } - if ( documentElement.nodeName == "parsererror" ) { - jQuery.error("parsererror"); - } - } - }, - // 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 @@ -230,8 +205,8 @@ jQuery.extend({ // Convert anything to text "* text": window.String, - // Text to html (no transformation) - "text html": window.String, + // Text to html (true = no transformation) + "text html": true, // Evaluate text as a json expression "text json": jQuery.parseJSON, diff --git a/src/xhr.js b/src/xhr.js index 991a145..b9db717 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 -- 1.7.10.4