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调用未定义结果?
答案 0 :(得分: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")) {
}
答案 1 :(得分:1)
如果查看返回的有效负载,实际结果将在名为results
的属性中。所以,试试:
alert(data.results.length)