Added in support for $.ajax jsonpCallback (allowing you to specify the name of the callback method - and allowing you to avoid skipping the cache). Fixes #4206.

This commit is contained in:
John Resig 2009-12-06 17:17:14 -08:00
parent aea5b09195
commit fbc73d45b4
2 changed files with 34 additions and 4 deletions

View file

@ -221,7 +221,7 @@ jQuery.extend({
// Build temporary JSONP function
if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
jsonp = "jsonp" + jsc++;
jsonp = s.jsonpCallback || ("jsonp" + jsc++);
// Replace the =? sequence both in the query string and the data
if ( s.data ) {
@ -235,7 +235,7 @@ jQuery.extend({
s.dataType = "script";
// Handle JSONP-style loading
window[ jsonp ] = function(tmp){
window[ jsonp ] = window[ jsonp ] || function(tmp){
data = tmp;
success();
complete();

View file

@ -518,10 +518,10 @@ test("jQuery.getScript(String, Function) - no callback", function() {
});
test("jQuery.ajax() - JSONP, Local", function() {
expect(7);
expect(8);
var count = 0;
function plus(){ if ( ++count == 7 ) start(); }
function plus(){ if ( ++count == 8 ) start(); }
stop();
@ -579,6 +579,20 @@ test("jQuery.ajax() - JSONP, Local", function() {
}
});
jQuery.ajax({
url: "data/jsonp.php",
dataType: "jsonp",
jsonpCallback: "jsonpResults",
success: function(data){
ok( data.data, "JSON results returned (GET, custom callback name)" );
plus();
},
error: function(data){
ok( false, "Ajax error JSON (GET, custom callback name)" );
plus();
}
});
jQuery.ajax({
type: "POST",
url: "data/jsonp.php",
@ -624,6 +638,22 @@ test("jQuery.ajax() - JSONP, Local", function() {
});
});
test("JSONP - Custom JSONP Callback", function() {
expect(1);
stop();
window.jsonpResults = function(data) {
ok( data.data, "JSON results returned (GET, custom callback function)" );
start();
};
jQuery.ajax({
url: "data/jsonp.php",
dataType: "jsonp",
jsonpCallback: "jsonpResults"
});
});
test("jQuery.ajax() - JSONP, Remote", function() {
expect(4);