我正在尝试构建一个“加载更多”帖子功能,其中通过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代码进行响应,即使没有更多帖子,如果没有更多帖子要加载,我是否应该让服务器做出不同的响应?我想我只是不知道处理没有更多帖子加载的情况的正确方法。现在没有任何反应,我的应用程序没有给用户任何类型的反馈,表明他们已经加载了所有可用的帖子。
非常感谢!
答案 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对象在这里看起来似乎有些过分,但它会带来良好的实践,特别是如果您决定在将来返回一些额外的数据。