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>
4

4 回答 4

5

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

您的 web 服务 (loadmore.php) 应该保持无状态,并且您的前端 (javascript) 应该知道状态(最后加载的 id)。

于 2012-08-08T12:37:38.963 回答
1

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

于 2012-08-08T12:37:31.963 回答
0

最好的方法是创建一个可以提供偏移量的页面,它将查询新帖子。这就是我在wordpress中这样做的方式:

  1. 确保为页面提供偏移量(url):http: //yourwebsite.com/more/ ?offset=20
  2. 然后获取偏移量并使用偏移量运行查询。
  3. 那么你将不会有任何相同的结果......

我知道这听起来很模糊——所以我用代码写了一个教程——想看看吗?http://benjaminpotter.org/infinite-scroll/

于 2012-09-05T00:32:31.250 回答
0

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

一个非常常见的例子是最后使用的时间戳。当您需要一些新的提要时,您只需将此时间戳发送到服务器,他就会获取例如下一个比这次更旧的 5 个提要

于 2012-08-08T12:39:13.580 回答