在使用jQuery请求JSONP时,我可以使用静态(即预定的)回调函数名称吗?
-
05-07-2019 - |
题
jQuery文档列出了以下使用$ .getJSON请求JSONP的示例:
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
function(data) {
$.each(data.items, function(i,item) {
$("<img/>").attr("src", item.media.m).appendTo("#images");
if (i == 3) return false;
});
});
而不是使用此方法,因为此参数生成动态回调函数名称:
jsoncallback=?
我希望能够事先将其设置为硬编码的函数名称,如下所示:
jsoncallback=test
这是有效的,在我运行脚本的意义上,我回来的JSONP将JSON对象包含在对test()的调用中。
但是,我无法弄清楚如何设置回调函数。难道不应该这么简单吗?
function test(data) {
console.log(data);
}
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=test");
当我尝试这个时,我得到了包含在test()中的JSONP,但是我定义的函数test()从未被调用过。我错过了什么吗?
感谢您的帮助!
其他提示
啊,“相关”侧栏部分救了我。在我提交这个问题之后,我发现了一个类似的问题:
使用一个命名函数作为jQuery中$ .getJSON的回调,以满足Facebook请求签名要求
Duncan在10月15日的回答为我解决了这个问题:
window.fixed_callback = function(data){
alert(data.title);
};
$(function() {
$.getScript("http://api.flickr.com/services/feeds/photos_public.gne?tags=cats&tagmode=any&format=json&jsoncallback=fixed_callback", function(data) {
alert('done'); } );
});
我猜关键是使用$ .getScript而不是$ .getJSON。仍然可以在$ .getScript方法的参数中指定匿名回调函数,该函数将在请求URL参数(在这种情况下为“fixed_callback”)中命名的回调函数之后执行。希望这有助于有人在路上。
不隶属于 StackOverflow