尝试从JSON请求中分配总结果数#

时间:2013-06-23 21:27:02

标签: jquery json

我正在使用jQuery来发出JSON数据请求。它根据搜索查询返回项目。我要做的就是返回要在页面上显示的结果数。

以下是搜索返回success时我正在做的事情:

if(data){ 
  var totalResults = data.length; 
}
$('ul.list-posts').before('<p>'+totalResults+' results for '+searchQuery+'</p>');
$.each(data.items, function (i, data) {
  var question_list = '<li><a data-qid="' + data.question_id + '"><span class=meta><b class=upvote>' + data.up_vote_count + ' Up</b><b class=downvote>' + data.down_vote_count + ' Down</b></span>' + data.title + '</a></li>';
  $('ul.list-posts').append(question_list);
});

但由于某种原因,totalResults var正在返回undefined。我知道它正在尝试显示数据并且没有length的数据......但我不是试图从数据中显示长度,我正在尝试使用长度来获得结果总数。我究竟做错了什么?

2 个答案:

答案 0 :(得分:2)

您确定data是有效对象吗?你不是在寻找if(data){ var totalResults = data.items.length; }吗?

您的each是否正常工作?

您还应该将each包裹在if内并使用else

创建后备广告
if(data){ 
  var totalResults = data.length; 

  $('ul.list-posts').before('<p>'+totalResults+' results for '+searchQuery+'</p>');
  $.each(data.items, function (i, data) {
    var question_list = '<li><a data-qid="' + data.question_id + '"><span class=meta><b class=upvote>' + data.up_vote_count + ' Up</b><b class=downvote>' + data.down_vote_count + ' Down</b></span>' + data.title + '</a></li>';
    $('ul.list-posts').append(question_list);
  });
} else {
  $('ul.list-posts').html("<li>I wasn't able to retrieve data</li>");
}

答案 1 :(得分:0)

可能数据是空的,首先尝试查看是否有任何对象。