From 00fb8a9ad61eb6d13e6f6c7c668caa66074f05d1 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 | 62 +++++++++++++++++++++-------------------------------- 2 files changed, 27 insertions(+), 64 deletions(-) diff --git a/src/ajax.js b/src/ajax.js index 592c25cfb..5c655b58c 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -212,31 +212,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 @@ -245,8 +220,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 8c26bc8c1..0ff7665b2 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 ( i ) { - - prev = dataTypes[ i - 1 ]; - - if ( prev === "*" ) { - - prev = current; - - } else if ( 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; - } - } - } - - checker = dataCheckers[ current ]; - - if ( response != null && checker ) { - checker( response ); - } - if ( responses[ current ] ) { xhr[ "response" + responses[ current ] ] = response; responses[ current ] = 0; } - if ( ! i && dataFilter ) { + if ( i ) { - response = dataFilter( response ); + if ( prev !== "*" && current !== "*" && prev !== current ) { + oneConv = conv1 = + dataConverters[ ( conversion = prev + " " + current ) ] || + dataConverters[ "* " + 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; + } + } + } + } else if ( dataFilter ) { + + response = s.dataFilter( response ); dataTypes = s.dataTypes; - dataFilter = 0; - i--; } + + prev = current; } // We have a real success