【问题标题】:Pagination with ajax使用ajax进行分页
【发布时间】:2013-09-04 21:23:47
【问题描述】:

我已经构建了一个使用 ajax 进行分页的应用程序(使用 PHP、Codeigniter 和 jQuery),类似于 Twitter 过去的做法(单击按钮加载更多数据)。

一切都很好,但是有一些问题。

当没有更多帖子可供加载时,我希望删除“加载更多”按钮。但是,现在我只能在单击按钮时检查是否还有帖子,并且脚本返回 null。

现在是这样的:假设数据库中有 14 个帖子。默认加载 5 个。

1 - 点击加载-更多,加载了 5 个以上的帖子。剩下 4 个。

2 - 点击加载-更多,加载剩余的 4 个帖子。

3 - 点击加载-更多,没有更多剩余帖子,按钮消失

但我想摆脱第 3 步,应用程序应该“意识到”在第 2 步没有更多帖子要呈现。

我确信有一种我还没有想到的简单方法......

【问题讨论】:

    标签: php jquery codeigniter


    【解决方案1】:

    简单。选择 6 个帖子而不是 5 个并仅显示 5 个。如果帖子数量少于 6 个,则不显示更多按钮。

    if ($num_rows < 6){
      //remove more button
    } 
    

    【讨论】:

      【解决方案2】:

      您可以设置一个全局 Javascript 变量来保存帖子总数,如下所示:

      var total = <?php echo $total ?>;
      

      并在通话后将金额与总数进行比较:

      if($('.post').length == total) // .post being database results
          $('#loadmore').hide();
      

      【讨论】:

      • 是的,但还有其他一些问题。就像如果用户发布另一个帖子会发生什么。那么真实的帖子总数将是 $total+1
      • 好吧,如果有人发布另一个帖子,这也将通过 jQuery 处理,对吧?因为它将被 AJAX 提交并添加到列表中。由于total 是一个Javascript 变量,您可以在将帖子添加到列表的相同代码中简单地执行total++
      【解决方案3】:

      返回一个 JSON 对象,其中一个属性是数组(条目),一个属性是布尔型“EOF”等,以指示何时没有更多条目要加载。

      如果(响应.EOF) //隐藏按钮..

      哦,在 AjaxRequest 中添加当前分页中最后一篇文章的 id。 这样,服务器就会给你说它给你的最后一个帖子的 25 个帖子。 然后,如果在分页期间添加新帖子,您将不会获得偏移量。

      【讨论】:

        【解决方案4】:

        你可以试试这样的

        if ($num_rows < 5){
        /*what ever you want removed */
        } 
        

        循环结束时

        【讨论】:

          【解决方案5】:

          请,请,请 - 不要在 Ajax 中进行分页!

          以自然的方式浏览此类页面,无法使用后退按钮或重新加载按钮或设置书签或任何东西,这对 a$$ 来说很痛苦!

          更别提根本不支持js的客户端

          【讨论】:

          • 你可以使用jquery地址插件来达到这个目的。
          • 如果做得正确,你提到的所有事情都会正常工作。
          猜你喜欢
          • 2014-05-13
          • 2015-01-01
          • 2014-07-05
          • 1970-01-01
          • 1970-01-01
          • 2011-07-06
          • 2011-06-04
          • 2013-10-07
          相关资源
          最近更新 更多