带有自定义Flickr API调用的getJson会生成解析错误

时间:2012-08-24 09:38:18

标签: jquery ajax api getjson flickr

我昨晚花了大部分时间在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并对嵌套数组中的每个'photo'对象进行迭代,这样我就可以在迭代过程中轻松访问它们的子属性,如下所示:

[光实例] .ID

[光实例] .owner

[光实例] .secret 等...

非常感谢任何帮助。

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

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

2 个答案:

答案 0 :(得分:2)

来自Jquery documentation

  

如果网址包含字符串“callback =?” (或类似的,由...定义)   在服务器端API),请求被视为JSONP。见   讨论$ .ajax()中的jsonp数据类型以获取更多详细信息。

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

  

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

从您的网址中删除callback=?,您应该没问题。

答案 1 :(得分:0)