JavaScript 请教一个 jQuery 从 twitter 抓取最近 5 条推文的诡异问题

cisolarix · 2012年10月15日 · 最后由 ywjno 回复于 2012年10月15日 · 4900 次阅读

昨天学习 http://book.douban.com/subject/10569608/ 这本书的第六章,章后最后一题要求用 jQuery 从 twitter 上抓取最近的 5 条推文,并显示在 div#dictionary 区域。 我一开始用的是 getJSON 方法。代码如下: $(function(){ var url = "https://api.twitter.com/1/statuses/user_timeline.json? screen_name=cisolarix&count=5"; $.getJSON(url + "?callback=?", function(data){ var html = ''; $.each(data, function(idx, value){ html += '

' + value.text +''; html += '' + value.created_at + ''; }); $('#dictionary').html(html); }).error(function(){ console.log('error'); }); });

但是始终在控制台打印 error 信息。在 chrome 的 developer tool --> network 中能看到请求的回复 status 是 200. 直接将请求 url 复制到 chrome 中也是可以正常得到 json 数据的,只是推文条数为 3 条(初步怀疑是 twitter 做了限制)。

上面的方法测试未果后,用 $.ajax() 方法测试,代码如下: $(function(){ $.ajax('https://api.twitter.com/1/statuses/user_timeline.json', { crossDomain: true, data: { screen_name: 'cisolarix', count: 5 }, dataType: 'jsonp' }).done(function (tweets) { var html = ''; $.each(tweets, function(idx, value){ html += '

' + value.text +''; html += '' + value.created_at + ''; }); $('#dictionary').html(html); }); });

这次就可以正常显示推文了,尽管还是三条。 我想请教的是,为啥 getJSON 方法在这种情境下不能得到 json 数据? 提前谢谢各位。

PS:我使用的 jQuery 版本为:v1.6.2 PS again: 上面的代码段不知道如何跟正文区别显示。

$.ajax方法指定了dataType: 'jsonp',在$.getJSON把那个给加上看看(不过我不记得能不能指定 dataType)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号