我仍然是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中收到错误报告:“无效标签”,关于根范围中的“标题”对象。
答案 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用这些括号括起来。