Laravel使用无限滚动分页

时间:2014-07-03 14:39:29

标签: ajax laravel pagination infinite-scroll

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

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

我无法弄清楚应该通过ajax将什么内容发送到我的控制器?

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

提前致谢。

1 个答案:

答案 0 :(得分: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! Gimme&#34; id&#34; #container的最后一个孩子//它会   be&#34; post-28&#34;

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

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

我们说我们是通过ajax查询在服务器端获得的

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

当然,我们必须做一些准备工作,例如剪切&#34;发布 - &#34;来自&#34; lastLoadedPostId&#34;等

然后我们问我们的数据库

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

如果您的数据库中使用了nonIncremental标识符,并且您在服务器端获得了

  

{lastLoadedPostId:&#39; qwertyuid&#39;,order:&#39; DESC&#39;,postsPerQuery:3}

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

  嘿,数据库!告诉我什么时候&#34; qwertyuid&#34;创建了

     嘿,数据库!在&#34;时间戳之前创建的Gimme 3帖子   qwertyuid&#34;

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