使用实时数据向下滚动分页 - PHP

时间:2016-10-10 07:10:39

标签: php jquery pagination jquery-pagination

我使用php和jquery创建了一个向下滚动分页,它可以工作。

我的问题是:我们假设我们有20个数据,我们在第一页(每页10个数据),用户想要显示第二个页面,此时3个新数据已经创建并添加到数据库中。

因此第二页的结果会有所不同,第一页的某些数据会再次显示。

我怎么能算出来?

1 个答案:

答案 0 :(得分:2)

让用户决定

大多数无限滚动网站(按照您的问题向下滚动时呈现更多内容)按时间顺序排序,这意味着新内容只会添加到列表的开头或结尾。现在,在大多数情况下,附加到结果末尾的内容无关紧要,因此这里的主要问题是显示应该在已经显示的项目之前出现的项目。

(作为旁注,我并没有处理应该出现在已经显示的结果之间的内容,因为动态地抛弃项目的顺序是用户体验的噩梦,如果可能的话应该避免。)< / p>

要解决此问题,最简单的方法是在向下滚动时继续从上次显示的项目的ID中提取。如果将新数据添加到所采取的数据集中,我建议显示某种形式的通知或横幅,告诉用户新内容可用,并且仅在用户点击该内容时加载新内容/重新加载页面。

这样做的原因是,当用户已经对数据集采取行动时创建的新数据可能与用户当前正在做的事情无关。例如,如果用户只想更新已经显示的N个记录,那么应用程序应该让他们完成他们正在做的事情,而不是自动将项目注入列表并可能搞乱当前的工作流程。

回顾一下:

  • 如果数据被添加到集合的末尾:无所事事,继续动态加载内容。
  • 如果数据被添加到集合的开头:继续从您停止的位置加载内容,但显示可以加载新数据的通知。
  • 如果数据被添加到集合的中间:与上面相同,继续加载并通知用户。 另外,如果可能,请避免这种情况。

用于说明的一些伪代码

假设您的网站上有无限滚动工作,而且大部分工作已经实施。

$dataList.on('scroll', function() {

    var newData = false;

    if (endOfPage) {

        $dataList.append(getNextInList())

        newData = checkForNewData();

        if (newData) {

            newDataNotification();
        }
    }
});