Layui分页参数名需通过request配置重命名,如request: {limitName: 'size', pageName: 'current'},且必须置于table.render()顶层;where参数需手动映射,reload不继承request,parseData须同步调整响应字段解析。
后端分页参数名不是limit或page怎么办
layui 默认把分页参数发成 limit 和 page,但很多后端接口用的是 size/current、rows/pageno 甚至 per_page/page_number。不改映射,前端设了 limit: 50 也白搭,请求里根本不会出现。
- 用
request配置重命名分页字段:request: { limitName: 'size', pageName: 'current' } - 用
where手动加参数只能解决“额外条件”,不能覆盖分页字段名 -
request必须写在table.render()的顶层配置里,不能放在before或reload的参数中 - 如果后端连
count字段都用非标准名(比如叫total),得配合parseData一并处理
如何让 where 里的参数也走自定义字段名
where 是普通查询参数,Layui 不会自动改它的键名——它本来就是你写的什么,发出去就是什么。但容易混淆的是:有人误以为 request 能改 where,其实不能。
-
where: { keyword: 'abc', status: 1 }→ 请求 URL 中就是?keyword=abc&status=1 - 如果后端要求
q=abc而不是keyword=abc,就得手动映射:where: { q: $('#keyword').val(), s: $('#status').val() } - 想复用同一套参数逻辑?把映射写成函数,在
before里统一处理:options.where.q = options.where.keyword,再删掉keyword - 注意:不要在
before里直接赋值options.where = {...},会丢掉默认的page/limit参数
reload 时 custom request 参数不生效的坑
table.reload() 不继承 request 配置——它只继承初始 render 时的 request,但你传进去的参数里没法重设 request。所以 reload 后分页字段名还是原来的,除非你重新 render。
- reload 只能改
where、page、limit等运行时参数,request属于初始化配置,不可变 - 如果要动态切 API(比如从 /v1/list 切到 /v2/list,后者字段名不同),必须先
table.destroy(id),再重新table.render() - 别指望
table.set({ request: {...} })全局改——它只影响后续新 render 的表格,对已有实例无效 - 真要 runtime 切换字段名,唯一办法是自己拼 URL +
data模式,绕过 Layui 的分页逻辑
request,却没同步改 parseData 里对响应结构的提取逻辑——比如后端返回 { total: 100, list: [...] },你还按默认的 count 去取,表格就卡在 loading。











