使用Flickr JSON请求时不会返回任何结果

时间:2011-01-13 10:49:48

标签: jquery ajax json jsonp flickr

我仍然是AJAX的新手,我正在试验Twitter和Flickr。 Twitter到目前为止工作正常,但我遇到了Flickr API的一些问题。

我没有得到任何结果。 URL似乎工作正常,我指向包含数组的正确对象('items')。任何人都可以告诉我,我做错了吗?谢谢!

      $('#show_pictures').click(function(e){
    e.preventDefault();
    $.ajax({
      url: 'http://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=home&nojsoncallback=1',
      dataType: 'jsonp',
      success: function(data) {
        $.each(data.items, function(i, item){
          $('<div></div>')
            .hide()
            .append('<h1>'+item.title+'</h1>')
            .append('<img src="'+item.media.m+'" >')
            .append('<p>'+item.description+'</p>')
            .appendTo('#results')
            .fadeIn();
        })
      },
      error: function(data) {
        alert('Something went wrong!');
      }
    });
  });

编辑:我已经更改了网址,我在FireFox中收到错误报告:“无效标签”,关于根范围中的“标题”对象。

4 个答案:

答案 0 :(得分:1)

似乎问题出现在网址中。显然,jQuery总是需要一个回调参数,它通常会附加“callback =?”。但是,由于Flickr使用“jsonpCallback”作为参数的名称,我不得不将URL更改为:

http://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=home&jsoncallback=

然而,它突然就像一个魅力!

答案 1 :(得分:0)

尝试发表评论:

$('<div></div>')
        .hide()
        .append('<h1>'+item.title+'</h1>')
        .append('<img src="'+item.media.m+'" >')
        .append('<p>'+item.description+'</p>')
        .appendTo('#results')
        .fadeIn();

只是做

  console.log(data);

如果您使用的是萤火虫(您可能应该使用)或

  alert(data);

这将告诉您您的请求是否返回数据。仅供参考,我在你的网址上运行了curl,它返回了一堆json。

答案 2 :(得分:0)

使用dataType: 'json'代替dataType: 'jsonp'会有什么不同吗?

答案 3 :(得分:0)

'无效标签'是指解释器期望的标签 - 值对中的标签。它可以像这样解决

http://willcode4beer.com/tips.jsp?set=jsonInvalidLabel

或者你可以传递jsoncallback =?返回的json用这些括号括起来。