Ajax无限滚动返回相同的结果

时间:2014-10-15 19:51:27

标签: jquery sql ajax loops

我有这个功能,可以检测用户何时到达页面底部,然后向服务器发送ajax请求...

$(window).scroll(function()
    {
      // if at bottom, add new content:
      if  ($(window).scrollTop() == $(document).height() - $(window).height())
      {
        var data = { mode: "bottom" };

        $.ajax({
            type: 'POST',
            url: 'server/script/infinity.php',
            data: data,

            success: function(data){
              $("#load").append(data);              
            }
        });
      }

    }); 

然后,在<div id="load"></div>框中输出请求中的数据。 我的问题是返回的结果与页面上已有的结果相同。我需要在数据库中获得NEXT 5结果。

这是我当前的SQL查询:

mysqli_query($mysqli,"SELECT * FROM posts ORDER BY id DESC LIMIT 5"); 
while($post = mysqli_fetch_array($result)) { ... }

我试过......

mysqli_query($mysqli,"SELECT * FROM posts ORDER BY id DESC LIMIT 5, 5");

请参阅LIMIT 5,5这解决了接下来的5个结果的问题,但是当用户继续滚动时出现同样的问题,我需要一种方法来循环这个但是增加每个限制时间。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

"SELECT * FROM posts ORDER BY id DESC LIMIT 5(X), 5")

X值必须是参数化的。

的javascript:

var data = {page : 10};
$.ajax({
            type: 'POST',
            url: 'server/script/infinity.php',
            data: data,

            success: function(data){
              $("#load").append(data);              
            }
});

php:

    $starting_limit = $_REQUEST['page'];
mysqli_query($mysqli,"SELECT * FROM posts ORDER BY id DESC LIMIT ". $starting_limit.", 5");

您必须跟踪查询的起始限制