Javascript-在使用jQuery请求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(...)

您需要指定callback =?进行JSONP调用时.我通常只将其用于“ json”的响应类型.对于“ jsonp”的响应类型,您要使用:

jQuery.get(...)

并将类型指定为“ jsonp”.请参阅此documentation on the subject.但这也受必须具有callback =?的约束.

我认为您是looking for is this

jQuery.getScript(...)

哪个应执行您在回调中定义的任何方法.

上一篇:C#知识点提炼期末复习专用


下一篇:java-从第三方获取JSON数据并避开SOP