我正在为自己开发一个Twitter Web应用程序。我正在检索最新的热门话题。
这是我的做法:
$.ajax({
url: 'http://api.twitter.com/1/trends/1.json',
dataType: 'jsonp',
success: function(data){
$.each(data[0].trends, function(i){
$('div#trending').hide().append("<p><a href='"+data[0].trends[i].url+"'>"+data[0].trends[i].name+"</a></p>").fadeIn(1000);
//Cache into LocalStorage
localStorage["trending"+i] = data[0].trends[i].name; //Name
localStorage["trendurl"+i] = data[0].trends[i].url;//URL
});
}
});
但是有时在我开发它时,超出了速率限制。
如何检测是否超出了速率限制?
我似乎无法检测到是否显示此错误:
{"error":"Rate limit exceeded. Clients may not make more than 150 requests per hour.","request":"\/1\/trends\/1.json"}
我已经尝试过:
success: function(data){
if(data[0].error != 'undefined'){
//load localstorage cache
}
}
但这似乎不起作用。
请帮忙。
谢谢 :)
最佳答案
当您受到速率限制时,Twitter API将发送HTTP 400状态代码,因此请检查以下内容:
$.ajax({
// ...
statusCode: {
400: function() {
alert( 'rate limited.' );
}
}
});
另请注意,您的比较有点错误。当错误文本不是
data[0].error != 'undefined'
时,'undefined'
始终为true。因此,即使您受到速率限制,错误文本也不会是'undefined'
,因此可以成功。您可能要检查的是:if ( !data[0].error ) { // data[0].error is not null
// ...
}