2

jQuery代码:

$(document).ready(function() {
      $('#hit').click(function() {
        $.getJSON("http://search.twitter.com/search.json?q=stackoverflow&callback=?", function(data) {
            alert(data.length);
        });
      });  // #button hit click evnet
});  // document ready

结果未定义。

在此处输入图像描述

我在浏览器中手动导航 api 调用,它确实返回了数据。

在此处输入图像描述

为什么我的 jQuery getJSON 调用未定义结果?

4

2 回答 2

3
$.getJSON("http://search.twitter.com/search.json?q=stackoverflow&callback=?", function(data) {
     alert(Object.keys(data).length);
 });

返回data的是一个对象而不是一个数组,所以data.length是未定义的。

但并非所有浏览器都支持上述过程。所以你可以试试:

data.results.length

要检查对象中是否存在键(如果您不确定),最好使用:

if( "key" in object) {

}

对于你的情况:

if( "results" in data) {

}

如果您的查询变得无效,twitter 将响应一个错误对象,以便确认成功的查询结果,您可以使用:

if("error" in data) {

}

还有一个过程叫做hasOwnProperty()

if(data.hasOwnProperty("results")) {

}
于 2012-05-29T02:42:16.897 回答
1

如果您查看返回的有效负载,实际结果位于名为results. 所以,试试:

alert(data.results.length)
于 2012-05-29T02:52:43.890 回答