Laravel使用无限滚动分页

问题描述 投票:-1回答:1

任何人都可以帮我指出如何在Laravel中实现无限滚动的正确方向?

我熟悉Laravel的分页工具,我也熟悉Javascript。

我只是无法弄清楚我应该通过ajax发送到我的控制器?

我的意思是什么url参数以及如何在滚动时动态更改?

提前致谢。

ajax laravel pagination infinite-scroll
1个回答
1
投票

你不必通过ajax发送特别的东西 只需通过JS获取已经加载的最后一篇文章的id并执行ajax.get到http://example.com/foo/100500 在routes.php中捕获id,像这样的Route::get('foo/{id}', 'BazController@bar' 然后根据你想要的id来执行控制器中的任何逻辑 例如,从id和id + 20之间的id中选择数据库

更新

考虑到@ugochimbo的问题

让我们说当我们第一次获取页面时,我们会获得类似的东西

<div id="container">
    <div id="post-30">Lorem impum dolor</div>
    <div id="post-29">Lorem impum dolor</div>
    <div id="post-28">Lorem impum dolor</div>
</div>

发生了一件事,例如(scrollTop超过一些px)

然后我们执行类似的事情

嘿,jQuery!给#container的最后一个孩子的gimme“id”//它将是“post-28”

考虑到id,我们对服务器执行ajax查询。

我假设对于无限滚动的最简单实现,我们必须只知道客户端的“id”,没有别的。当然,在任何实际情况下,还有一堆附加信息,例如DESC或ASC或其他任何信息。全取决于你。

假设我们通过ajax查询在服务器端获得

{lastLoadedPostId: 'post-28', order: 'DESC', postsPerQuery: 3}

当然,我们必须做一些准备工作,例如从“lastLoadedPostId”等中删除“post-”

然后我们问我们的数据库

嘿,数据库! Gimme 3帖子,ID小于28,按顺序排列

如果在数据库中使用nonIncremental标识符,则在服务器端获取

{lastLoadedPostId:'qwertyuid',顺序:'DESC',postsPerQuery:3}

在这种情况下,您应该对数据库执行一次额外查询

嘿,数据库!当“qwertyuid”创建时告诉我

嘿,数据库!在“qwertyuid的时间戳”之前创建的Gimme 3帖子

为此,您可以使用LIMIT,OFFSET等命令或您提供的任何数据库,但这已经成为其他问题

© www.soinside.com 2019 - 2024. All rights reserved.