layui表格分页loading不显示,根本原因是请求未成功触发:必须配置有效url、启用page布局、确保接口返回200状态码及正确data/count结构,且reload时同步where参数;其他如空url、权限失败、parsedata错误等均会导致loading跳过。

layui 表格分页时 loading 不闪,不是配置漏了,就是请求链路被静默拦截了——比如接口返回空、权限校验失败、url 没传或 where 动态变更后没同步到 reload 参数里。
table.render 里 loading 怎么开才生效
layui 表格的 loading 是靠 loading: true 控制的,但它只在发起异步请求时起作用。关键点是:必须有 url,且不能是空字符串或未定义。
-
loading: true是默认值,显式写出来更保险,但不写也不影响(前提是其他条件满足) - 如果初始化时
url: ''或url: undefined,哪怕后面table.reload()带了url,首次分页仍不会触发 loading -
page: { layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] }必须启用,否则分页栏不渲染,自然也没 loading 触发时机 - 不要依赖
done回调里手动开 layer.load()——那是绕路,且容易和表格自身 loading 冲突
分页点击没 loading?先查这三处
分页按钮点击后静默无反应,loading 不出现,大概率卡在这几个环节:
- 接口返回状态码不是 200(比如 401/403),Layui 默认不报错也不 show loading,直接吞掉请求
-
parseData里 return 的数据结构不对(比如没返回data或count字段),导致表格认为“数据已就绪”,跳过 loading 流程 -
table.reload()时没传where参数,而服务端依赖它做鉴权或过滤,结果返回空数组或 500 错误,前端收不到响应,loading 就不会启动
想在分页栏显示“正在加载第X页”怎么办
Layui 表格分页栏本身不支持动态文字提示,得自己补 DOM 并监听事件。
- 用
page.elem定位分页容器,比如$('.layui-table-page .layui-laypage'),插入临时提示元素 - 在
beforeSend钩子里操作(需配合自定义 request,因为原生不暴露这个钩子);更稳妥的是监听table.on('page(test)', ...),在回调开头加提示,结尾移除 - 别直接改
.layui-laypage-skip里的文本——它会被 Layui 下次重绘覆盖;建议加一个独立<div class="page-loading"></div>放在分页栏上方,用 CSS 定位 - 记得加防抖:连续快速点页码时,避免多个 loading 提示堆叠
layer.load() 和 table.loading 能混用吗
不能。layer.load() 是全局浮层,z-index 和生命周期都和表格无关,强行叠加会导致遮罩错位、关闭不同步、移动端 touch 失效。
- 表格自带 loading 已足够,优先走
loading: true+ 正确 url + 成功响应这条路径 - 如果非要定制图标或文字,改用
done回调里控制自定义 loading 元素的显隐,而不是 layer.load() - layer.load() 只适合全屏或弹窗级加载,比如
layer.open里内容加载前的遮罩——那和表格分页是两套逻辑
最常被忽略的其实是接口返回体格式和网络状态码。loading 不闪,90% 不是 layui 配置问题,而是请求根本没走到成功分支,连 loading 启动的条件都没满足。











