1

我昨晚大部分时间都在针对 Flickr API 尝试 JQuery 中的“getJSON”方法。我设法查看了 JQuery 文档中的一些示例并设法使它们工作,但是从我的自定义 API 调用中读取 JSON 的尝试失败了。

片段:

这有效:

  //JQuery Flickr example code - works!
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?&format=json",
  function(data) {
    $.each(data.items, function(i,item){
      alert(item.media.m);
      if ( i == 3 ) return false;
    });
  });

这失败了!

  //Custom Flickr API Call - nothing?fail?
  $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=c258d8ae4c29bb74da198c6ac3874671&text=Mclaren&per_page=3&format=json&callback=?&nojsoncallback=1",
  function(data) {

    alert(data);


  }).error(function(jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown); });

第二个 API 调用是有效资源,它在浏览器/提琴手中工作,我可以看到 JSON 内容,但在我的 JS 代码中引发了错误

"parsererrorError: jQuery18007627279118169099_1345796861535 was not called".

此时我被卡住了,最终我的最终目标是处理返回的 JSON 并迭代嵌套数组中的每个“照片”对象,以便我可以在迭代期间轻松访问它们的子属性,如下所示:

[照片实例].id

[照片实例].owner

[照片实例].secret 等...

任何帮助将不胜感激。

参考: http ://www.flickr.com/services/api/response.json.html

注意:所有 API 密钥都用于测试目的,很快就会被销毁。

4

2 回答 2

2

来自Jquery 文档

如果 URL 包含字符串“callback=?” (或类似的,由服务器端 API 定义),请求被视为 JSONP。有关详细信息,请参阅 $.ajax() 中对 jsonp 数据类型的讨论。

由于您的 URL 包含callback=?,jQuerygetJSON函数正在等待(动态指定的)回调调用,JSONP 样式。但正如您nojsoncallback在 URL 中指定的那样,服务器会发送您提供的文档中指定的标准 JSON 内容:

如果您只想要没有函数包装器的原始 JSON,请将值为 1 的参数 nojsoncallback 添加到您的请求中。

Remove the callback=? from you URL and you should be fine.

于 2012-08-24T09:40:49.307 回答
0

Add &nojsoncallback=1 at the end

https://api.flickr.com/services/feeds/photos_public.gne?format=json&nojsoncallback=1

于 2016-10-05T17:34:04.720 回答