Removed dataCheckers, added true as possible value for dataConverters indicating dataType equivalence (ie. no conversion has to be performed).

This commit is contained in:
jaubourg 2010-12-25 15:38:33 +01:00
parent 5237b09602
commit 00fb8a9ad6
2 changed files with 27 additions and 64 deletions

View File

@ -212,31 +212,6 @@ jQuery.extend({
// 3) selection will start with transport dataType and THEN go to "*" if needed // 3) selection will start with transport dataType and THEN go to "*" if needed
transports: {}, 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 // List of data converters
// 1) key format is "source_type destination_type" (a single space in-between) // 1) key format is "source_type destination_type" (a single space in-between)
// 2) the catchall symbol "*" can be used for source_type // 2) the catchall symbol "*" can be used for source_type
@ -245,8 +220,8 @@ jQuery.extend({
// Convert anything to text // Convert anything to text
"* text": window.String, "* text": window.String,
// Text to html (no transformation) // Text to html (true = no transformation)
"text html": window.String, "text html": true,
// Evaluate text as a json expression // Evaluate text as a json expression
"text json": jQuery.parseJSON, "text json": jQuery.parseJSON,

View File

@ -231,7 +231,6 @@ jQuery.xhr = function( _native ) {
oneConv, oneConv,
convertion, convertion,
dataTypes = s.dataTypes, dataTypes = s.dataTypes,
dataCheckers = s.dataCheckers,
dataConverters = s.dataConverters, dataConverters = s.dataConverters,
dataFilter = s.dataFilter, dataFilter = s.dataFilter,
responses = { responses = {
@ -243,24 +242,26 @@ jQuery.xhr = function( _native ) {
current = dataTypes[ i ]; current = dataTypes[ i ];
if ( responses[ current ] ) {
xhr[ "response" + responses[ current ] ] = response;
responses[ current ] = 0;
}
if ( i ) { if ( i ) {
prev = dataTypes[ i - 1 ]; if ( prev !== "*" && current !== "*" && prev !== current ) {
if ( prev === "*" ) {
prev = current;
} else if ( current !== "*" && prev !== current ) {
oneConv = conv1 = oneConv = conv1 =
dataConverters[ ( conversion = prev + " " + current ) ] || dataConverters[ ( conversion = prev + " " + current ) ] ||
dataConverters[ "* " + current ]; dataConverters[ "* " + current ];
if ( oneConv !== true ) {
if ( ! oneConv && prev !== "text" && current !== "text" ) { if ( ! oneConv && prev !== "text" && current !== "text" ) {
conv1 = dataConverters[ prev + " text" ] || dataConverters[ "* text" ]; conv1 = dataConverters[ prev + " text" ] || dataConverters[ "* text" ];
conv2 = dataConverters[ "text " + current ]; conv2 = dataConverters[ "text " + current ];
} }
if ( oneConv || conv1 && conv2 ) { if ( oneConv || conv1 && conv2 ) {
response = oneConv ? conv1( response ) : conv2( conv1( response ) ); response = oneConv ? conv1( response ) : conv2( conv1( response ) );
} else { } else {
@ -268,26 +269,13 @@ jQuery.xhr = function( _native ) {
} }
} }
} }
} else if ( dataFilter ) {
checker = dataCheckers[ current ]; response = s.dataFilter( response );
if ( response != null && checker ) {
checker( response );
}
if ( responses[ current ] ) {
xhr[ "response" + responses[ current ] ] = response;
responses[ current ] = 0;
}
if ( ! i && dataFilter ) {
response = dataFilter( response );
dataTypes = s.dataTypes; dataTypes = s.dataTypes;
dataFilter = 0;
i--;
} }
prev = current;
} }
// We have a real success // We have a real success