layui table分页栏不显示的最常见原因是page未设为true或未传limits/limit;服务端分页需返回根级count字段且为数字,否则需用parseData手动提取;请求须带page/limit参数,避免contentType设为application/json。
layui table 渲染后没分页栏,page 配置无效
最常见原因是 page 没设成 true 或没传 limits/limit。layui 的表格分页是“手动开关”,不是默认开启的。哪怕你写了 url、写了 cols,只要 page: false(或压根没写 page 字段),分页栏就完全不渲染。
实操建议:
-
page必须显式设为true,不能依赖默认值(它默认是false) - 如果用服务端分页,
page可以是对象,但至少得有page: { layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] } - 前端静态数据分页(
data直接传数组)时,page设true就够了,Layui 会自动算总页数 - 服务端分页必须返回
count字段,且类型是数字,字符串"100"会导致分页栏消失
接口返回了 count 和 data,但分页栏仍不显示
问题往往出在响应结构和字段名不匹配。Layui 默认只认 count 和 data 这两个 key,且要求它们在同一层级。如果后端返回的是 { code: 0, msg: '', result: { count: 200, list: [...] } },Layui 就找不到 count,直接放弃分页逻辑。
实操建议:
- 用浏览器 Network 面板确认响应体,检查
count是否存在、是否为数字、是否在根级 - 如果不匹配,用
parseData回调手动提取:parseData: function(res){ return { count: res.result.count, data: res.result.list }; } -
parseData里不能漏掉count,哪怕你只想要当前页数据,Layui 也靠它算总页数
点击分页按钮没反应,或者翻页后数据没变
本质是请求参数没带过去,或者后端没按参数处理。Layui 分页时会自动在请求 URL 后拼 ?page=2&limit=30 这类参数,但如果用了 where 或 contentType: 'application/json',这些参数可能被丢弃或格式错乱。
实操建议:
- 检查 Network 中实际发出的请求 URL,确认是否有
page和limit参数 - 如果用了
where,确保它是对象,不要写成字符串;Layui 会把它合并进请求参数 - 避免手动设置
contentType: 'application/json',否则page/limit不会出现在 query string 里,而 JSON body 又没传——后端收不到分页信息 - 服务端必须读取
page和limit做分页查询,不能只查全量再前端截取
自定义主题或二次封装后分页样式错乱/按钮失效
分页 DOM 是 Layui 在渲染表格后动态插入的,依赖原始 CSS 选择器和事件绑定。如果你删了 layui.css、覆盖了 .layui-table-page 类,或用 JS 删除/移动了分页容器,Layui 就无法正确操作它。
实操建议:
- 不要用
display: none隐藏分页栏,该用layout配置项控制显示项,比如layout: ['count', 'limit'] - 避免用 jQuery 或原生
remove()删除分页区域,Layui 不会重新生成 - 如果必须重写样式,优先用
!important覆盖,而不是删 class 或改结构 - 动态重载表格(
table.reload())后,分页栏会重建,但旧的 DOM 引用就失效了,别缓存分页节点
.layui-table-page 容器,比看 JS 控制台更有用。










