ThinkPHP怎么实现前端分页加载_ThinkPHP无限滚动技巧【技巧】

千伟酱_8521

千伟酱_8521

2026-06-18

930人浏览

原创

thinkphp不提供前端无限滚动分页的开箱即用方案,需前后端协同:后端用page()和count()提供标准json分页api,前端用intersectionobserver监听滚动并管理加载状态,避免重复请求与数据错乱。

thinkphp怎么实现前端分页加载_thinkphp无限滚动技巧【技巧】

ThinkPHP 本身不提供“前端无限滚动分页”的开箱即用方案,它只负责后端返回分页数据;真正实现滚动加载,得靠前端发请求 + 后端配合返回结构化数据,否则容易卡死、重复加载或漏数据。

ThinkPHP 的 paginate() 默认不兼容无限滚动

ThinkPHP 的 paginate() 方法默认渲染完整 HTML 分页栏(含上一页/下一页/页码),返回的是带 <div class="pagination"> 的字符串,不是 JSON。无限滚动需要的是纯数据接口,不是模板片段。 <ul> <li>直接在 AJAX 请求里调 <code>index.html 路由?会拿到整个页面 HTML,解析成本高、易出错

  • 想复用 paginate() 的分页逻辑?可以,但必须手动提取数据、跳过视图渲染
  • 关键点:用 $query->paginate(['type' => 'bootstrap', 'var_page' => 'page']) 只控制参数,不控制输出格式
  • 后端要提供标准的分页 API 接口

    新建一个控制器方法(如 api/list),不调 fetch(),只返回 JSON:

    前端设计优化skill
    前端设计优化skill

    前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。

    下载
    public function list()
    {
        $page = input('get.page/d', 1);
        $limit = input('get.limit/d', 10);
    
        $data = Db::name('article')
            ->order('id desc')
            ->page($page, $limit)
            ->select();
    
        $total = Db::name('article')->count();
    
        return json([
            'code' => 0,
            'data' => $data,
            'meta' => [
                'current_page' => $page,
                'last_page'    => ceil($total / $limit),
                'per_page'     => $limit,
                'total'        => $total
            ]
        ]);
    }
    
    • 别用 paginate() 返回对象再转 JSON —— 它内部会自动计算总条数并附加分页属性,但字段名和结构不统一(比如 render 是 HTML 字符串)
    • 显式用 page($page, $limit) + count() 更可控,避免 paginate() 在 API 场景下偷偷注入视图依赖
    • 务必校验 $page 和 $limit,防止 SQL 注入或内存爆掉(例如传 limit=999999)

    前端滚动监听 + 防抖 + 加载状态管理

    后端只是数据源,前端才是滚动加载的关键执行者。常见翻车点:快速滚动触发多次请求、到底部时重复加载、没判断是否还有下一页。

    • 用 IntersectionObserver 替代 scroll 事件监听,性能更好、兼容性够(IE 不支持,但 TP 项目通常不保 IE)
    • 加个 loading 标志位,请求中禁止再次触发:比如 if (loading || page >= last_page) return;
    • 不要等 window.innerHeight + window.scrollY >= document.body.offsetHeight——误差大,用目标占位元素更稳
    • 示例关键逻辑:axios.get('/api/list', { params: { page: nextPage++, limit: 10 } }),成功后追加到列表 DOM 并更新 last_page

    最常被忽略的是「服务端分页键是否稳定」:如果列表按 create_time 排序,而新数据实时插入,滚动加载时可能出现重复或跳过——这不是 TP 的问题,是业务排序字段本身不具备唯一性和稳定性。这时候得改用 id 的游标分页,TP 后端要配合做 WHERE 条件改写,而不是依赖 page/offset。

    php免费学习视频:立即使用
    踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

    相关文章

    PHP速学教程(入门到精通)
    PHP速学教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    thinkphp php 前端

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    python是前端还是后端
    python是前端还是后端

    Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.11

    2483

    5

    前端如何实现即时通讯
    前端如何实现即时通讯

    实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

    2023.10.09

    5363

    6

    前端和后端的区别
    前端和后端的区别

    前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

    2024.03.19

    6410

    13

    php和前端的关联介绍
    php和前端的关联介绍

    php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

    2024.03.22

    5998

    10

    前端外包工作内容有哪些
    前端外包工作内容有哪些

    前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

    2024.05.22

    863

    5

    php文件怎么打开
    php文件怎么打开

    打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

    2023.09.01

    10804

    6

    php怎么取出数组的前几个元素
    php怎么取出数组的前几个元素

    取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

    2023.10.11

    6301

    5

    php反序列化失败怎么办
    php反序列化失败怎么办

    php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

    2023.10.11

    2135

    5

    php怎么连接mssql数据库
    php怎么连接mssql数据库

    连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

    2023.10.23

    3988

    4

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程