带有自定义Flickr API调用的getJson生成一个parse-error



我昨晚大部分时间都在JQuery中针对Flickr API尝试"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调用是一个有效的资源,它在浏览器/fiddler中工作,我可以看到JSON内容,但在我的JS代码中,一个错误被引发

"parsererrorError: jQuery18007627279118169099_1345796861535 was not called".

在这一点上,我陷入了困境,最终我的最终目标是处理嵌套数组中每个"照片"对象上返回的JSON和itterate,这样我就可以在迭代过程中轻松访问它们的子属性,比如:

[照片实例].id

[照片实例].所有者

[照片实例].secret等等。

如有任何帮助,我们将不胜感激。

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

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

来自Jquery文档:

如果URL包含字符串"callback=?"(或类似的字符串,如服务器端API),则该请求被视为JSONP。请参阅讨论$.ajax()中的jsonp数据类型以获取更多详细信息。

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

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

从您的URL中删除callback=?,您应该会没事的。

添加&nojsoncallback=1在结束

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

相关内容

最新更新