【发布时间】:2016-10-10 19:59:58
【问题描述】:
我使用 php 和 jquery 创建了一个向下滚动的分页,它可以工作。
我的问题是:我们假设我们有 20 条数据,我们在第一页(每页 10 条数据),用户想要显示第二页,此时已经创建了 3 条新数据并将其添加到数据库中。
所以第二页的结果会不一样,第一页的一些数据会再次显示。
我怎么知道呢?
【问题讨论】:
标签: php jquery pagination jquery-pagination
我使用 php 和 jquery 创建了一个向下滚动的分页,它可以工作。
我的问题是:我们假设我们有 20 条数据,我们在第一页(每页 10 条数据),用户想要显示第二页,此时已经创建了 3 条新数据并将其添加到数据库中。
所以第二页的结果会不一样,第一页的一些数据会再次显示。
我怎么知道呢?
【问题讨论】:
标签: php jquery pagination jquery-pagination
大多数无限滚动网站(在您向下滚动时呈现更多内容,就像您的问题一样)按时间顺序排序,这意味着新内容只会添加到列表的开头或结尾。现在,在大多数情况下,附加到结果末尾的内容是无关紧要的,所以这里的主要问题是显示应该在已经显示的项目之前出现的项目。
(作为旁注,我不是在处理应该出现在已显示结果之间的内容,因为动态改变项目的顺序是用户体验的噩梦,应该尽可能避免。)
要解决这个问题,最简单的方法是在向下滚动时从最后显示的项目的 ID 继续获取。如果将新数据添加到操作的数据集中,我建议显示某种形式的通知或横幅,告诉用户有新内容可用,并且只有在用户点击时才加载新内容/重新加载页面。
这样做的原因是,在用户已经对数据集执行操作时创建的新数据可能与用户当前正在执行的操作无关。例如,如果用户只想更新已显示的 N 条记录,则应用程序应该让他们完成他们正在做的事情,而不是自动将项目注入列表并可能打乱当前的工作流程。
假设您的网站上有无限滚动功能,并且其中大部分已经实现。
$dataList.on('scroll', function() {
var newData = false;
if (endOfPage) {
$dataList.append(getNextInList())
newData = checkForNewData();
if (newData) {
newDataNotification();
}
}
});
【讨论】: