Changed dataConverters key format.

This commit is contained in:
unknown 2010-12-24 18:02:45 +01:00 committed by jaubourg
parent 524bf39400
commit 22e28b01e6
5 changed files with 19 additions and 30 deletions

View file

@ -223,36 +223,21 @@ jQuery.extend({
}, },
// List of data converters // List of data converters
// 1) key format is "source_type => destination_type" (spaces required) // 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
dataConverters: { dataConverters: {
// Convert anything to text // Convert anything to text
"* => text": function(data) { "* text": window.String,
return "" + data;
},
// Text to html (no transformation) // Text to html (no transformation)
"text => html": function(data) { "text html": window.String,
return data;
},
// Evaluate text as a json expression // Evaluate text as a json expression
"text => json": jQuery.parseJSON, "text json": jQuery.parseJSON,
// Parse text as xml // Parse text as xml
"text => xml": function(data) { "text xml": jQuery.parseXML
var xml, parser;
if ( window.DOMParser ) { // Standard
parser = new DOMParser();
xml = parser.parseFromString(data,"text/xml");
} else { // IE
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async="false";
xml.loadXML(data);
}
return xml;
}
} }
}, },

View file

@ -70,18 +70,16 @@ jQuery.xhr.prefilter("json jsonp", function(s) {
}, s.complete ]; }, s.complete ];
// Use data converter to retrieve json after script execution // Use data converter to retrieve json after script execution
s.dataConverters["script => json"] = function() { s.dataConverters["script json"] = function() {
if ( ! responseContainer ) { if ( ! responseContainer ) {
jQuery.error("Callback '" + jsonpCallback + "' was not called"); jQuery.error( jsonpCallback + " was not called" );
} }
return responseContainer[ 0 ]; return responseContainer[ 0 ];
}; };
// Delegate to script transport // Delegate to script transport
return "script"; return "script";
} }
}); });
})( jQuery ); })( jQuery );

View file

@ -12,7 +12,7 @@ jQuery.extend( true, jQuery.ajaxSettings , {
}, },
dataConverters: { dataConverters: {
"text => script": jQuery.globalEval "text script": jQuery.globalEval
} }
} ); } );

View file

@ -254,12 +254,14 @@ jQuery.xhr = function( _native ) {
} else if ( current !== "*" && prev !== current ) { } else if ( current !== "*" && prev !== current ) {
oneConv = conv1 = oneConv = conv1 =
dataConverters[ ( conversion = prev + " => " + current ) ] || dataConverters[ ( conversion = prev + " " + current ) ] ||
dataConverters[ "* => " + current ]; dataConverters[ "* " + current ];
console.log( conversion );
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 ) );

View file

@ -707,6 +707,10 @@ test("jQuery.ajax - xml: non-namespace elements inside namespaced elements (over
equals( jQuery("jsconf", resp).length, 1, 'jsconf in responseXML' ); equals( jQuery("jsconf", resp).length, 1, 'jsconf in responseXML' );
equals( jQuery("thing", resp).length, 2, 'things in responseXML' ); equals( jQuery("thing", resp).length, 2, 'things in responseXML' );
start(); start();
},
error: function(_1,_2,error) {
ok( false, error );
start();
} }
}); });
}); });
@ -1487,7 +1491,7 @@ test("jQuery.ajax() - json by content-type disabled with options", function() {
}, },
success: function( text ) { success: function( text ) {
equals( typeof text , "string" , "json wasn't auto-determined" ); equals( typeof text , "string" , "json wasn't auto-determined" );
var json = this.dataConverters["text => json"]( text ); var json = this.dataConverters["text json"]( text );
ok( json.length >= 2, "Check length"); ok( json.length >= 2, "Check length");
equals( json[0].name, 'John', 'Check JSON: first, name' ); equals( json[0].name, 'John', 'Check JSON: first, name' );
equals( json[0].age, 21, 'Check JSON: first, age' ); equals( json[0].age, 21, 'Check JSON: first, age' );