layui分页不渲染的核心原因是数据结构不匹配:count和data必须位于响应体根级且类型严格正确,page配置必须显式启用,否则分页栏不会生成。

请求成功但分页不渲染,核心问题不是后端没返回,而是 Layui 没“认出”你给的数据结构 —— 它在等 count 和 data,且必须都在响应体根级、类型严格匹配。
响应体里找不到 count 或它不是数字
Layui 分页栏的总页数、当前页码、跳转逻辑全靠 count 字段推算。如果接口返回的是 {"result": {"count": 120, "list": [...]}},Layui 根本不会去 result 里找,直接放弃分页渲染,连分页栏都不画出来。
- 用浏览器 Network → Preview 查看原始响应,确认
count是顶层字段,且值是数字(不是字符串"120") - 如果结构不匹配,必须加
parseData手动提取:parseData: function(res) { return { count: res.result.count, // 必须是数字 data: res.result.list }; } -
parseData返回对象里count缺失或为undefined,分页控件会静默失效
data 字段不是数组或为空
哪怕 count 正确,如果 data 是 null、undefined、对象或空数组 [],表格主体会显示 “No data”,分页栏可能渲染出来但总页数为 0,点击无反应。
- 检查
data是否为真实数组:Array.isArray(res.data),且res.data.length > 0 - 后端返回纯数组(如
[{},{}])时,Layui 默认不认,需配合response: {dataName: ''}清空映射,或改用parseData包一层 - 若
data是字符串(比如 JSON 未自动解析),Layui 会当它是个空数据源,也不报错
分页栏本身压根没启用
很多人以为只要写了 url 和 cols,分页就自动有了。其实 page 默认是 false,不显式设为 true 或对象,DOM 里根本不会生成 .layui-table-page 元素。
- 检查是否漏写
page: true(服务端分页)或完整page: { layout: [...], count: xxx, limit: xx }(前端分页) - 在 Elements 面板搜索
.layui-table-page,搜不到就说明page配置无效 - 前端分页场景下,
page: true完全被忽略 —— 必须用对象形式,并手动传入count(全量数据长度)
请求参数没带过去,导致后端查了全量
请求状态码是 200、响应体看着也对,但翻页后数据不变,大概率是 page 和 limit 参数压根没发到后端。
- 打开 Network → 点击下一页 → 查看该 XHR 请求 URL,确认含
page=2&limit=10这类 query 参数 - 如果用了
where: 'status=1'(字符串)而非where: {status: 1}(对象),Layui 无法合并分页参数 - 手动设置
contentType: 'application/json'会让page/limit被丢进 query string 失效,而 body 又没传 —— 后端收不到分页指令
最易被忽略的一点:Layui 的分页逻辑极度依赖“约定结构”,它不尝试容错、不提示字段缺失、不 fallback 到前端截取。一旦 count 不在根级、类型不对、或 page 配置被误认为无效,整个分页链路就断在第一步 —— 渲染器甚至不会开始工作。











