javascript - 在使用 jQuery 请求 JSONP 时,我可以使用静态(即预先确定的)回调函数名称吗?

标签 javascript jquery ajax callback jsonp

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/

相关文章:

Javascript - 使用 iframe 获取所有页面 HTML(作为字符串)

javascript - JS .fadeOut 没有正确淡出

javascript - 在ajax中调用带参数的onreadystatechange回调函数

javascript - 将 javascript 移至单独的文件,ajax 调用出现错误

javascript - jQuery 多层 JSON

javascript - Raphael US SVG map 在值更改时不会重新着色

javascript - 使用 jquery 将匹配的单词包装在链接中

javascript - 如何使用第一个下拉列表的 onChange 事件填充另一个下拉列表?

PHP AJAX POST 发送多个变量

javascript - npm lint 上可观察到的 "source is deprecated"错误