无限滚动

时间:2012-08-08 12:31:31

标签: php javascript jquery

我试图让这个无限滚动脚本以我想要的方式工作。 但是我无法弄清楚,如何检测loadmore.php文件中哪些帖子是新的,所以它不会显示页面上已有的帖子?

<script type="text/javascript">
$(window).scroll(function()
{
    if($(window).scrollTop() == $(document).height() - $(window).height())
    {
        $('div#loadmoreajaxloader').show();
        $.ajax({
        url: "loadmore.php",
        success: function(html)
        {
            if(html)
            {
                $("#postswrapper").append(html);
                $('div#loadmoreajaxloader').hide();
            }else
            {
                $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
            }
        }
        });
    }
});
</script>

4 个答案:

答案 0 :(得分:5)

不要试图“弄清楚”哪些帖子是新的。确保在您的javascript中您知道上次加载的帖子(通过它的id或其他方式),并将其发送到'loadmore.php'脚本。

你的webservice(loadmore.php)应该保持无状态,你的前端(javascript)应该知道状态(最后加载的id)。

答案 1 :(得分:1)

嗯,简单地说:你必须存储这些信息。假设您在尝试加载的信息中有一些序列,您可以存储最后一次返回的ID,并将该信息作为PHP脚本中新信息的起点传递。

答案 2 :(得分:0)

为什么不在客户端上创建一个变量,它包含您尝试加载的元素列表的最后一个id或最后一个时间戳。然后你只需将此值传递给服务器,然后您的php文件就可以使用此值。

一个非常常见的例子是最后一个时间戳。当你需要一些新的feed时,你只需要将这个时间戳发送到服务器,然后他就会接下来比这次更老的接下来的5个Feed

答案 3 :(得分:0)

执行此操作的最佳方法是创建一个可以向其提供偏移量的页面,它将查询新帖子。这就是我在wordpress中做到这一点的方式:

  1. 确保您正在向页面提供偏移量(网址):http://yourwebsite.com/more/?offset=20
  2. 然后获取偏移并运行带偏移量的查询。
  3. 那你就不会有任何相同的结果......
  4. 我知道这听起来很模糊 - 所以我写了一个带代码的教程 - 小心一下吗? http://benjaminpotter.org/infinite-scroll/