这是在我的网站上创建无限滚动系统的正确方法吗?

时间:2016-09-12 21:57:50

标签: php jquery mysql ajax infinite-scroll

我最近学习了SQL,Ajax和(面向对象的)PHP的基础知识,我通过创建用户构建的信息源来使用它。但是,目前Feed只加载数据库中最近20个帖子(因为一次加载所有帖子会对页面加载时间产生负面影响)。

我已经决定尝试实现一个无限滚动系统(类似于Twitter和Facebook使用的方法)将是解决这个问题的最佳解决方案,但我不完全确定如何做到这一点。

我知道我需要的第一件事是判断用户是否已到达页面底部的功能。为此,我编写了以下简单的JQuery:

  $(window).scroll(function() { 
    var scrollBottom = $(document).height() - $(document).scrollTop() - $(window).height(); 
    if(scrollBottom < 200) {
      // send Ajax request
    }
  });

这段代码应该可以工作,但我担心如果用户在帖子提要更新之前多次滚动,会有多个Ajax请求被发送到服务器的风险。

我认为我需要做的下一件事是发送一个Ajax请求。当然,当前检索数据库中前20个帖子的脚本使用一行看起来像

的php / SQL
$query = "SELECT * FROM table DESC LIMIT 0,20";

我猜我需要用

之类的东西替换它
$query = "SELECT * FROM table DESC LIMIT " . $x . "," . $x+20;

然后创建另一个脚本来跟踪Ajax请求被发送的次数,并使用它来确定变量$ x以确保获取正确的结果。

最后我知道我需要创建某种回调函数来显示已经提取的帖子。

这是用于创建无限滚动系统的正确(最佳)方法吗? 另外,如何更改jQuery以阻止多个请求被发送?

1 个答案:

答案 0 :(得分:0)

是的,你是正确的,你要找的是$query = "SELECT * FROM table DESC LIMIT " . $x . ", 20";,它应该得到接下来的20行,并且在更新$x之前阻止更多行。

相关问题