我正在使用Request.JSONP获取一些数据,但我需要更改检索de数据的url中的回调函数。
使用文档中的示例:
如何更改此通话:
http://www.flickr.com/?format=json&jsoncallback=Request.JSONP.request_map.request_0
到此:
http://www.flickr.com/?format=json&jsoncallback=myOwnFunction
在jQuery中你可以使用“jsonpCallback”设置来使用你自己的函数,但我找不到在MooTools中改变它的方法。
任何帮助,想法,将不胜感激。
修改
我的问题是我的函数将在setInterval函数中,每次执行请求的url更改时都会这样:
回调= Request.JSONP.request_map.request_0
回调= Request.JSONP.request_map.request_1
回调= Request.JSONP.request_map.request_2 ... N
我需要最后一位数字不会改变(出于缓存目的)
答案 0 :(得分:1)
它为JSONP称为callbackKey
。 read the doc
这是一个flickr类,它扩展了我写的jsonp(更改api pls):
// the class
Request.flickr = new Class({
Extends: Request.JSONP,
options: {
callbackKey: "jsoncallback",
url: "http://www.flickr.com/services/rest/?",
log: true
},
initialize: function(params, options) {
this.parent(options);
this.options.url = this.options.url + Object.toQueryString(params);
},
success: function(data, script) {
this.parent(data, script);
},
imageURL: function(obj) {
return "http://farm{farm}.static.flickr.com/{server}/{id}_{secret}.jpg".substitute(obj);
}
});
// example on how to use
new Request.flickr({
format: 'json',
api_key: "e7df6c74d2545f55414423463bf99723", // your api here
per_page: 4,
tags: "mountains",
method: "flickr.photos.search"
}, {
onSuccess: function(data) {
target = document.id("action");
var self = this;
data.photos.photo.each(function(el) {
new Asset.image(self.imageURL(el), {
onload: function() {
this.inject(target);
}
});
});
}
}).send();
完全覆盖回调并传递外部函数(需要是全局的):
window.foo = function(data) {
console.log(data);
};
Request.flickr = new Class({
Extends: Request.JSONP,
options: {
url: "http://www.flickr.com/services/rest/?jsoncallback=foo&",
log: true
},
initialize: function(params, options) {
this.parent(options);
this.options.url = this.options.url + Object.toQueryString(params);
},
success: function(data, script) {
this.parent(data, script);
},
imageURL: function(obj) {
return "http://farm{farm}.static.flickr.com/{server}/{id}_{secret}.jpg".substitute(obj);
}
});
// example on how to use
new Request.flickr({
format: 'json',
api_key: "e7df6c74d2545f55414423463bf99723",
// your api here
per_page: 4,
tags: "mountains",
method: "flickr.photos.search"
}).send();
上面的代码将运行函数foo,将JSON对象传递给它。 http://jsfiddle.net/dimitar/DUtff/