如何检查Jquery Ajax的响应调用以加载更多帖子功能

时间:2011-06-14 08:09:30

标签: jquery ajax response

我正在尝试构建一个“加载更多”帖子功能,其中通过jquery发出请求并添加更多帖子。基本上我使用的是这段代码:

function loadMore(pageNo) {
  var url = '/users?page=';
  $.get(url + pageNo, function(response) {
    $("#users").append(response);
  });
}

$(document).ready(function() {
  var currPage = 1;
  $("a.next").click(function() {
  loadMore(++currPage);
  });
});

这一切都很完美,但我遇到的麻烦是如果没有更多的帖子要加载就处理响应。

基本上,我需要检查响应,如果是空白,请执行一些操作,例如隐藏更多链接,我知道该怎么做。我只需要帮助检查响应。我想象沿着这些方面的东西(一些伪代码),但无法弄明白。没有jquery大师:(

function loadMore(pageNo) {
  var url = '/users?page=';
  $.get(url + pageNo, function(response) {
    if response not blank
      $("#users").append(response);
    else
      hide anchor or change text to "No More Posts"
    end
  });
}

我的服务器正在使用200代码进行响应,即使没有更多帖子,如果没有更多帖子要加载,我是否应该让服务器做出不同的响应?我想我只是不知道处理没有更多帖子加载的情况的正确方法。现在没有任何反应,我的应用程序没有给用户任何类型的反馈,表明他们已经加载了所有可用的帖子。

非常感谢!

2 个答案:

答案 0 :(得分:0)

function loadMore(pageNo) {
  var url = '/users?page=';
  $.get(url + pageNo, function(response) {
    if (response == "") {
        $("a.next").hide();
    }
    else {
        $("#users").append(response);
    }
  });
}

答案 1 :(得分:0)

有几种方法可以解决这个问题,但是你的sudo代码中的内容是正确的。根据“响应”的格式,您可以检查响应值。如果它只是纯文本或html,你可以用空字符串检查它。

我个人会从服务器返回一个JSON对象,其中包含两个值,一个have_more标志和一个数据标志,然后您可以像这样检查响应,

if(response.have_more)
{
    $("users").append(response.data);
}
else
{
    //hide more link
}

您可以在服务器上的php中构建JSON数组,例如

<?php
$query_results = getPosts(offset, amount);
if(count($query_results) > 0)
{
    $json['data'] = $query_results;
    $json['have_more'] = true;
}
else
{
    $json['have_more'] = false;
}
echo json_encode($json);

使用JSON对象在这里看起来似乎有些过分,但它会带来良好的实践,特别是如果您决定在将来返回一些额外的数据。