2011-06-14 94 views
0

我想建立一个“加载更多”的帖子功能,通过jquery发出请求并添加更多帖子。基本上我用这个代码:如何检查Jquery Ajax的响应调用加载更多帖子功能

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
function loadMore(pageNo) { 
    var url = '/users?page='; 
    $.get(url + pageNo, function(response) { 
    if (response == "") { 
     $("a.next").hide(); 
    } 
    else { 
     $("#users").append(response); 
    } 
    }); 
} 
+0

lol。这样可行。我以为有些事情我不得不去做。我是这样一个白痴。谢谢。 – James 2011-06-14 08:22:30

0

There a有几种方法可以解决这个问题,但是你的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对象上可能没有必要在这里,但它使好的做法,特别是如果你决定要在将来返回一些额外的数据。

+0

好主意。谢谢! – James 2011-06-14 08:24:02