2011-08-18 44 views
3

Tweet! jQuery的正常工作的大部分时间,但偶尔我得到这个:问题与鸣叫!对于jQuery

"NetworkError: 400 Bad Request - http://api.twitter.com/1/statuses/user_timeline.json?screen_name=jlowgren&count=5&include_rts=1&page=1&callback=jQuery16202827138555332698_1313661810432&_=1313661810465 

这是jQuery的电话:

$(".tweet").tweet({ 
    username: "jlowgren", 
    count: 5, 
    loading_text: "Loading tweets…", 
    refresh_interval: 120 
}); 

该网站的问题是www.jorum.se

任何有这个英俊解决方案的人都会在业力中得到丰厚的回报!

+0

关于速率限制,请考虑在本地计算机上,您可能会请求twitter API,然后在您通过小部件发送的每小时30个请求之外实现此功能。很多网站开始使用AJAX API的间隔。 – Chamilyan

回答

3

它看起来像你的速度有限。

如果您的应用程序受到REST API的速率限制,它将会 接收HTTP 400响应代码。对于应用程序 来说,监视其当前速率限制状态并根据需要动态调整 请求是最佳实践。 REST API提供了两种观察速率限制常见问题解释的 状态的方法。

  • 验证的(OAUTH)请求具有极限350 /小时请求

同时。 。

  • 非认证请求有限制150 /小时请求

来查看当前的速率限制状态,发送GET请求来

http://api.twitter.com/1/account/rate_limit_status.json


有关详情,请参见this page

+0

根据网站获得大量流量的假设,假设获得评分的唯一方法是将最后已知的结果存储在服务器上并显示这些结果,是否应该发生400响应? – jlowgren

+1

不完全。实际上,这实际上不是你真正需要担心的问题。你看到的东西都是你的机器本地的。除非您怀疑另一个用户在您的本地计算机上投票Twitter,否则您无需担心。流量到您的网站实际上与此无关。我认为你的** OK **每个机器30个请求每小时轮询API。 – Chamilyan

+1

..但是为了安全起见,如果你想要的话,请尝试做下面建议的事情,以防API对于重量级用户失败。请记住,除了你的网站之外,他们还需要打开大量网站才能看到问题。按照你的建议做它并不会造成伤害,并向你发送服务器缓存的最后一个已知数据,但这看起来像是一个很大的开销。也许你可以忍受,加载新的数据信息。 – Chamilyan

1

它对我来说一直都很好(几经刷新之后)。每个IP没有限制吗?

+0

只需每小时afaik请求的限制,但这就是'refresh_interval'的用处,我希望。 – jlowgren

3

我认为你应该始终假定Twitter网络偶尔会失败(它迄今为止总是这样做)。所以把你的jquery tweet电话打包在javascript try catch

try { 
    $(".tweet").tweet({ 
    username: "jlowgren", 
    count: 5, 
    loading_text: "Loading tweets…", 
    refresh_interval: 120 
}); 
} catch (error) { 
    // error message or other response goes here 
} 
+0

谢谢,当我下班回来时,我会给你一个旋转。我想永久解决实际问题将涉及我兑现的结果,以防万一发生错误。 – jlowgren