我最近学习了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以阻止多个请求被发送?
答案 0 :(得分:0)
是的,你是正确的,你要找的是$query = "SELECT * FROM table DESC LIMIT " . $x . ", 20";
,它应该得到接下来的20行,并且在更新$x
之前阻止更多行。