我正在使用一些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,但我找不到一个很好的干净方法来做到这一点。在此先感谢您的帮助!
答案 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));