使用Jquery追加动态分页 - 如何保存位置?

时间:2011-02-26 14:10:06

标签: jquery pagination

我正在使用一些javascript(Jquery)在我的网站上动态分页数据,就像所有酷孩子现在所做的那样(FB,Twitter)。我喜欢它看起来的样子,这是一个很好的可靠系统,但是如果你通过操纵DOM来附加数据,如果你离开页面,你的位置就会消失,这总是让我感到烦恼。如果它有帮助,这就是我使用的:

$(document).ready(function(){
    $(".page-link").live("click",function(){
        $(this).html("<img src='http://www.whatever.com/img/loading_small.gif' />");
        var id = this.id;
        var splitid = id.split("?");
        var minlimit = splitid[1];
        var order = splitid[2];
        $.ajax({
            type:"POST",
            url:"http://www.whatever.com/php/selectAllWhatever.php?min="+minlimit+"&max=10&order="+order,
            data:"min="+minlimit+"&max=10",
            success:function(msg){
                $(".paging-bar").remove();
                $("#div").append(msg);
            }
        });
    });
});

所以说一个用户页面40结果,点击结果中的链接访问另一个页面,然后回来发现他们所做的所有分页都消失了,他们回到了前10个结果。不重要,但无论哪种方式都很烦人。如何在分页结果中保留它们的位置,以便当它们回来时它们就在他们离开的地方?我已经考虑过尝试传递一些获取参数来指示分页位置或留下一个cookie,但我找不到一个很好的干净方法来做到这一点。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以通过以下几种方式实现:GET / POST,SESSION变量或COOKIE。

要使用GET变量,您只需将变量放在所有链接的末尾,并在所有目标页面中处理这些变量。然后,您的目标页面必须修改其所有链接以携带该分页变量。当然,这不是最优雅的解决方案。

您也可以在会话变量中执行此操作。这个代码看起来像:
PHP:

//This is in #selectAllWhaterver.php
session_start();

$_SESSION['paginationMin'] = $_POST['min'];
$_SESSION['paginationMax'] = $_POST['max'];

***********************************************
//Then in your php when you reload the page that has pagination on it
session_start();

if(isset($_SESSION['paginationMin'])
     $min = $_SESSION['paginationMin'];
else
     $min = 0;

if(isset($_SESSION['paginationMax'])
     $max = $_SESSION['paginationMax'];
else
     $max = 10;

//Now use these variables to generate wtv content you are loading

这可能是最优雅的解决方案,因为它会保存会话的分页数据 - 这意味着一旦他们关闭浏览器就会重置。

如果您想使用cookie,即使在会话终止后它仍会存活,您可以这样做。 (注意:我不是专业饼干。抱歉,如果这不完美)

的javascript:

document.cookie = "paginationMin="+minLimit;
document.cookie = "paginationMax=10";

//And to grab them again


 var cookies = ""+document.cookie;
 var pos = cookies.indexOf("paginationMax");
 var pos2 = cookies.indexOf(';', pos);

 var max =  unescape(cookies.substring(pos+cookieName.length+1,pos2));

 var pos = cookies.indexOf("paginationMin");
 var pos2 = cookies.indexOf(';', pos);

 var min =  unescape(cookies.substring(pos+cookieName.length+1,pos2));