1

我正在使用 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);
});

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

4

2 回答 2

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>");
}
于 2013-06-23T21:28:30.323 回答
0

可能数据是空的,先试试看上面有没有对象。

于 2013-06-23T21:33:09.303 回答