从表中检索的条目是否重复? PHP

时间:2012-12-28 16:42:37

标签: php jquery mysql ajax pdo

我的网站上有一页结果,我在使用AJAX向下滚动时返回更多reslts,但我的问题是因为它拉结果,它似乎多次拉同样的?我不知道是什么导致这种情况,任何人都可以看到我做错了什么?

AJAX

$(window).scroll(function () {
    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10)  {
         var number = $(".directory").children().length;
        $.ajax({
           type: "POST",
           url: "getentries.php",
           data: "count="+number,
           success: function(results){
             $('.directory').append(results);
           }
         });



    } else {}
});

PHP

$result = mysql_query("SELECT * FROM directory LIMIT {$_POST['count']},12");

$c = 1;
while($row = mysql_fetch_array($result))
  {
  echo '<div class="entry';
            if (($c % 4) == 1) echo ' alpha ';
            echo 'ALL THE DATA IS GOING HERE';      
            $c++;
  }

3 个答案:

答案 0 :(得分:3)

问题很可能是在滚动时触发多个ajax调用。像这样设置一个定时事件监听器:

didScroll = false;
$(window).scroll(function() {
    didScroll = true;
});

setInterval(function() {
    if ( didScroll ) {
        didScroll = false;
        if(($(document).height() - $(window).height()) - $(window).scrollTop() < 100) {
            // load more results
        }
    }
}, 250);

本文解释了为什么您的解决方案不是一个好主意:http://ejohn.org/blog/learning-from-twitter/

答案 1 :(得分:1)

所以问题是,一旦达到滚动阈值,就会多次进行ajax调用。你需要在第一个ajax调用上添加一个标志,这样在ajax调用完成之前不会再调用它。

ajaxInProgress = false;
if (!ajaxInProgress && ($(window).scrollTop() >= $(document).height() - $(window).height() - 10)) {
    ajaxInProgress = true;
    $.ajax({
       type: "POST",
       url: "getentries.php",
       data: "count="+number,
       success: function(results){
         ajaxInProgress = false;
         $('.directory').append(results);
       }
     });
}

答案 2 :(得分:0)

问题在于如何使用ajax调用传递数据。从Jquery文档中,您需要将数量和数量放在数据中的javascript对象中:

$.ajax({
       type: "POST",
       url: "getentries.php",
       data: {count: number},
       success: function(results){
         $('.directory').append(results);
       }
     });

解决此问题后,您的Mysql查询应该将正确的下一条数据返回给您的视图。

希望这有帮助!