Справка по бесконечной пагинации Jquery / PHP - PullRequest
0 голосов
/ 18 ноября 2011

Я пытаюсь закодировать бесконечную нумерацию страниц и у меня возникают проблемы

$(document).ready(function(){

        function lastPostFunc() 
        { 
            $('div#lastPostsLoader').html('<div class="load"><div class="label"><font color="black"><b>Loading more...</b></font></div></div>');
            $.post("cr/sc/scr.php?lastID="+$(".comment:last").attr("id"),

            function(data){
                if (data != "") {
                $(".comment:last").after(data);         
                }
                $('div#lastPostsLoader').empty();

            });
        };  

        $(window).scroll(function(){
            if  ($(window).scrollTop() == $(document).height() - $(window).height()){

               lastPostFunc();
            }
        }); 

    });

, здесь идет мой php

    $result = mysql_query('SELECT * FROM xyz ORDER BY sy DESC LIMIT 15');

            while($row = mysql_fetch_object($result)) {
                $i++;
                                        echo "<div class='comment' id='" . $i. "'>"; 
                }

и другие страницы, чтобы получить данные

$ pg= $ _GET ['lastID'];

$ i = $ pg;$ result = mysql_query ('SELECT * FROM xyz ORDER BY sy DESC LIMIT'. $ pg. ', 15');

            while($row = mysql_fetch_object($result)) {
                $i++;
                            echo "<div class='comment' id='" . $i . "'>"; 
}

У меня проблема с получением значения комментария: последний

я получаю 15 значений комментария: последний после первой загрузки события

я получаю 15 значения комментария: последний после второй загрузки события

, что является проблемой, я ожидаю 30

и в 3-й раз происходит событие, которое дает 30

и тот же процесс снова 30,30,40,40,50,50

вместо 30,40,50,60,70,80

я попробовал jquery live (), и я использовал $ _GET, потому что я выбираю с URL

1 Ответ

0 голосов
/ 18 ноября 2011

Проверьте, загружаете ли вы функцию где-то еще, потому что функция загружается и останавливается на моем, и единственный способ заставить ее имитировать то, что вы говорите, - это если я снова загружу функцию при загрузке страницы, что создать два звонка одновременно. Причинение 1-15 и 1-15 и последний номер со страницы. Затем при прокрутке загружает функцию так, как она должна, и продолжает загружаться, как вы и говорите.

Плюс, убедитесь, что вы проверяете то, что (или даже если вы используете сообщение), которое попадает прямо в вашу базу данных. Это требует инъекции.

РЕДАКТИРОВАТЬ : Вам, вероятно, следует сначала загрузить полную страницу (и прошедшую), если у вас есть данные. Затем загрузите функцию прокрутки, которая не будет загружаться, если страница не заполнена. Вот почему это остановилось для меня.

EDIT2 : это код, который я использовал на тот случай, если вы захотите увидеть. Я создал фиктивную базу данных, поэтому мне не нужно было сопоставлять БД для проверки.

<?php
$scroller = 30;

if ( isset($_GET['hold']) && $_GET['hold'] == '1' ) {
    $i = isset($_GET['lastID'])?(int)$_GET['lastID']:0;
    $j = $i + $scroller;
    //sleep(10);
    while( $i < $j ) { // mimic a mysql call and spit it out.
        ++$i;
        echo "<div class='comment' id='${i}'>${i}</div>"; 
    }
    exit;
}
?>
<html>
<head>
<script src="jquery-1.7.min.js" type="text/javascript"></script>

<script type="text/javascript">    
// I was doing something else with this, but stripped out the code
var scroller = <?php echo $scroller;?>;
$(document).ready(function(){
    function lastPostFunc() 
    {
        // this assumes there are already comments on the page, so put a dummy comment
        var last = $(".comment:last").attr("id");

        $('div#lastPostsLoader').html('<div class="load"><div class="label"><font color="black"><b>Loading more...</b></font></div></div>');
        $.post("<?php echo $_SERVER['PHP_SELF']; ?>?hold=1&lastID="+last,

        function(data){
            if ( data != "" ) {
                $(".comment:last").after(data);         
            }
            $('div#lastPostsLoader').empty();
        });
    };  

    $(window).scroll(function(){
        if  ($(window).scrollTop() == $(document).height() - $(window).height()){
           lastPostFunc();
        }
    });
    lastPostFunc();
});
</script>
</head>
<body>

<div class="comment_container">
    <div class="comment" id="0"></div>
    <div id="lastPostsLoader"></div>
</div>

</body>
</html>
...