Makes sure all converters keys are lowercased before any conversion is taking place: dataTypes' names are now truly case insensitive. Unit test edited.
This commit is contained in:
parent
485fa0c42a
commit
7c9a5e6016
2 changed files with 16 additions and 5 deletions
13
src/ajax.js
13
src/ajax.js
|
@ -842,8 +842,9 @@ function ajaxConvert( s, response ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var dataTypes = s.dataTypes,
|
var dataTypes = s.dataTypes,
|
||||||
converters = s.converters,
|
converters = {},
|
||||||
i,
|
i,
|
||||||
|
key,
|
||||||
length = dataTypes.length,
|
length = dataTypes.length,
|
||||||
tmp,
|
tmp,
|
||||||
// Current and previous dataTypes
|
// Current and previous dataTypes
|
||||||
|
@ -860,6 +861,16 @@ function ajaxConvert( s, response ) {
|
||||||
// For each dataType in the chain
|
// For each dataType in the chain
|
||||||
for( i = 1; i < length; i++ ) {
|
for( i = 1; i < length; i++ ) {
|
||||||
|
|
||||||
|
// Create converters map
|
||||||
|
// with lowercased keys
|
||||||
|
if ( i === 1 ) {
|
||||||
|
for( key in s.converters ) {
|
||||||
|
if( typeof key === "string" ) {
|
||||||
|
converters[ key.toLowerCase() ] = s.converters[ key ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Get the dataTypes
|
// Get the dataTypes
|
||||||
prev = current;
|
prev = current;
|
||||||
current = dataTypes[ i ];
|
current = dataTypes[ i ];
|
||||||
|
|
|
@ -2077,12 +2077,12 @@ test("jQuery.ajax - transitive conversions", function() {
|
||||||
|
|
||||||
jQuery.ajax( url("data/json.php") , {
|
jQuery.ajax( url("data/json.php") , {
|
||||||
converters: {
|
converters: {
|
||||||
"json myjson": function( data ) {
|
"json myJson": function( data ) {
|
||||||
ok( true , "converter called" );
|
ok( true , "converter called" );
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dataType: "myjson",
|
dataType: "myJson",
|
||||||
success: function() {
|
success: function() {
|
||||||
ok( true , "Transitive conversion worked" );
|
ok( true , "Transitive conversion worked" );
|
||||||
strictEqual( this.dataTypes[0] , "text" , "response was retrieved as text" );
|
strictEqual( this.dataTypes[0] , "text" , "response was retrieved as text" );
|
||||||
|
@ -2092,13 +2092,13 @@ test("jQuery.ajax - transitive conversions", function() {
|
||||||
|
|
||||||
jQuery.ajax( url("data/json.php") , {
|
jQuery.ajax( url("data/json.php") , {
|
||||||
converters: {
|
converters: {
|
||||||
"json myjson": function( data ) {
|
"json myJson": function( data ) {
|
||||||
ok( true , "converter called (*)" );
|
ok( true , "converter called (*)" );
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
contents: false, /* headers are wrong so we ignore them */
|
contents: false, /* headers are wrong so we ignore them */
|
||||||
dataType: "* myjson",
|
dataType: "* myJson",
|
||||||
success: function() {
|
success: function() {
|
||||||
ok( true , "Transitive conversion worked (*)" );
|
ok( true , "Transitive conversion worked (*)" );
|
||||||
strictEqual( this.dataTypes[0] , "text" , "response was retrieved as text (*)" );
|
strictEqual( this.dataTypes[0] , "text" , "response was retrieved as text (*)" );
|
||||||
|
|
Loading…
Reference in a new issue