2012-08-08 170 views
2

我想让这个无限的滚动脚本以我想要的方式工作。 但我不明白,如何检测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> 

回答

5

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

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

1

好吧,简单地说:你要存储的信息。猜测在你尝试加载的信息中有一些序列,你可以存储哪个ID是最后一次返回的最后一个ID,并将这些信息作为PHP脚本中新信息的起点。

+1

引用问题的整个文本有点多余,不是吗? – DaveRandom 2012-08-08 12:38:10

+0

@DaveRandom是吗?我想我只是习惯了。如果它困扰人们,我会删除它。 – 2012-08-08 12:39:53

+0

这里没有必要这么做,所以SO的设计使得即使有很多答案它跨越多个页面,问题仍然可以在每个页面上看到。这不是你典型的论坛 - 它甚至不是真正的*论坛。 – DaveRandom 2012-08-08 12:41:33

0

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

一个非常常见的例子是上次拍摄的时间戳。当你需要一些新的饲料,然后你只是发送这个时间戳到服务器,他需要例如下一个年龄较大,然后这5时间的饲料

+0

这是如何完成的? – 2012-08-08 14:15:32

0

要做到这一点,最好的方法是创建一个页面,你可以饲料偏移到,它会查询新帖子。这是我如何在WordPress的做到了这一点:

  1. 确保您喂养页的偏移(URL):http://yourwebsite.com/more/?offset=20
  2. 然后得到的偏移量和运行具有偏移的查询。
  3. 这时你不会有任何相同的结果...

我知道这听起来很模糊的 - 所以我写的代码教程 - 护理看看? http://benjaminpotter.org/infinite-scroll/

+0

你还有这篇文章的链接吗?那一个不工作了...... – 2015-05-28 16:39:37

+1

当然可以! @LeonGaban - 查看http://benpotter.me/infinite-scroll/ – 2015-07-21 10:44:16