Динамическая пагинация с добавлением Jquery - как сохранить местоположение? - PullRequest
2 голосов
/ 26 февраля 2011

Я использую некоторый 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 результатам. Не критично, но раздражает в любом случае. Как я могу сохранить их местоположение в результатах подкачки, чтобы, когда они возвращаются, они были там, где они остановились? Я думал о попытке передать некоторые параметры get, указывающие местоположение подкачки или оставить cookie, но я не могу найти хороший чистый способ сделать это. Заранее спасибо за любую помощь!

1 Ответ

1 голос
/ 26 февраля 2011

Вы можете сделать это несколькими способами: 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));
...