jQuery documentation下面列出了使用 $.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() 从未被调用。我错过了什么吗?
感谢您的帮助!
最佳答案
作为defined in the documentation为您使用以下方法
jQuery.getJSON(...)
进行 JSONP 调用时需要指定 callback=?
。我通常只将它用于“json”的响应类型。对于“jsonp”的响应类型,您要使用:
jQuery.get(...)
并将类型
指定为“jsonp”。看这个documentation on the subject .但这也受到必须有一个 callback=?
这一事实的约束。
我认为你是什么looking for is this :
jQuery.getScript(...)
它应该执行您在回调
中定义的任何方法。
关于javascript - 在使用 jQuery 请求 JSONP 时,我可以使用静态(即预先确定的)回调函数名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1608302/