【问题标题】:Practical way to paginate data with ajax使用ajax对数据进行分页的实用方法
【发布时间】:2025-12-19 16:55:06
【问题描述】:

我有一个文件index.php,它的工作方式如下:

  • 连接数据库,取表,将结果存储到存储对象的对象中(成员变量对应字段名)。所以我会将所有查询到的数据存储在 DataList 类的对象中。
  • 我有一个DataListPaginator,它实现了Iterator 接口,我用这种方式进行分页:$p= new DataListPaginator($d,1,10); 其中$d 属于DataList 类,1 是页码,10 是每个项目要显示的页面。
  • 在底部我有一些实际分页脚本的页码,这是一个 ajax 解决方案,编码为 loadPaginator.jspaginator_ajax.php,后者由 ajax 调用。

paginator_ajax.php 文件中,我有以下内容:

  • 再次包含类
  • 再次建立数据库连接
  • 再次获取数据
  • 再次生成视图
  • 更新页码

我的问题是,如果我已经将结果查询并存储在 index.php 某处的变量中,我怎么能设法简化这个 php 脚本而不是一遍又一遍地查询数据库。

【问题讨论】:

    标签: php jquery ajax pagination


    【解决方案1】:

    试图实现这一点,你正在失去分页的好处之一。

    连接数据库,获取表,将结果存储在对象中 存储对象(成员变量对应于字段名称)。所以我 将所有查询的数据存储在 DataList 类的对象中。

    当这个表有 10,000 条记录时会发生什么?分页的要点之一是只检索一个小的数字,比如 10、25 或 50,以保持数据库查询的快速。否则你会失去效率和速度。

    您应该停止尝试以这种方式实现它,因为它没有意义,如果与 not 不同,则对服务器的请求时间 + 获得低于 100 的分页结果集将可以忽略不计完全查询数据库。前提是您有一个带有索引的优化查询。

    您应该对结果集进行分页并将当前页面和使用的限制发送回客户端,允许他们增加页面计数以获得下一个结果集。

    我建议您重新考虑这种提取整个表然后在 PHP 中处理它的策略,因为这是数据库的本意,而不是没有为此目的进行优化的事情。

    【讨论】:

      【解决方案2】:

      您可以使用 JQuery DataTables 对数据应用页面和排序。只需创建一个包含您的数据的

      元素并将 DataTable 应用于您的
      。某些设置将为您提供所需的功能。

      注意事项:如果您要加载大量数据,DataTables 可能会变慢。有太多的列和/或太多的行会使一些浏览器爬行并可能锁定它们。此时最好在服务器端实现分页。

      JQuery DataTables

      【讨论】: