Changed dataConverters key format.
This commit is contained in:
parent
524bf39400
commit
22e28b01e6
25
src/ajax.js
25
src/ajax.js
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -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 );
|
||||||
|
|
|
@ -12,7 +12,7 @@ jQuery.extend( true, jQuery.ajaxSettings , {
|
||||||
},
|
},
|
||||||
|
|
||||||
dataConverters: {
|
dataConverters: {
|
||||||
"text => script": jQuery.globalEval
|
"text script": jQuery.globalEval
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
10
src/xhr.js
10
src/xhr.js
|
@ -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 ) );
|
||||||
|
|
|
@ -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' );
|
||||||
|
|
Loading…
Reference in a new issue