我正在为自己开发一个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
    // ...
}

09-25 17:00