table.reload() 必须显式传 page: {curr: 1} 才能重置页码,否则默认复用当前页码;where、page、limit 和表格 ID 四个参数缺一不可,且 page: {curr: 1} 是唯一被识别的页码重置方式。

table.reload() 必须显式传 page: {curr: 1}
点击搜索按钮后表格没回第一页,不是接口没调用,而是 table.reload() 根本没收到页码重置指令。Layui 默认复用当前页码(比如你在第 5 页点搜索,它就继续发 page=5),where 参数再怎么改,对页码毫无影响。
常见翻车写法:table.reload('userTable', { where: data.field }) —— 缺了 page,等于什么都没说;where: { pageNum: 1 } 或 where: { page: 1 } 也无效,Layui 不认这些 key。
-
page: {curr: 1}是唯一被识别的页码重置方式 - 哪怕用户本来就在第 1 页,这一行也必须写,否则 reload 后可能因状态不一致跳到错误页
- 如果用了
request: { pageName: 'pageNum' },前端控制页码仍走page: {curr: 1},后端接收名不影响这个逻辑
reload 调用必须带全四个关键参数
漏掉任意一个,都可能导致分页器错乱、页码不更新、甚至 reload 失效。Layui 的 table.reload() 不是“局部刷新”,而是“重新初始化请求流程”,缺参数就 fallback 到默认值。
-
where:搜索条件,建议直接用data.field,避免手拼键名出错 -
page: {curr: 1}:强制回到第一页,不可省略 -
limit:必须显式传,尤其页面支持每页条数切换时;不传可能被重置为默认limit: 30,导致分页器显示页数和实际不符 - 表格 ID(如
'userTable'):必须和table.render()初始化时的id选项完全一致,否则 reload 找不到目标实例
正确示例:table.reload('userTable', { where: data.field, page: {curr: 1}, limit: 10 });
多次点击搜索要防节流,避免页码被覆盖
用户连点搜索按钮,可能触发多个 table.reload() 并发执行。后发起的请求若没带 page: {curr: 1},就会把前一次刚设好的页码覆盖掉——结果是点了两下,页面却停在第 3 页。
- 不要在
form.on('submit')回调里裸写 reload,容易漏参数或重复调用 - 加个简单锁:提交前设
btn.disabled = true,done回调里再恢复 - DOM 上显示的“当前第 N 页”文案,只响应
page: {curr: X},不随数据变化自动刷新——少传一次,文案就滞后一次
删完最后一页数据导致空白?那不是搜索问题
这和搜索后是否回第一页无关,是分页逻辑断层:比如当前在第 3 页,删光了所有数据,后端返回 count: 28(总条数变少),但前端 curr 还是 3,而 28 条按 limit=10 只有 2 页,第 3 页自然空。
这种场景下,page: {curr: 1} 不是解药。更合理的做法是在 done 回调里判断:if (res.data.length === 0 && curr > 1) { table.reload('userTable', { page: { curr: curr - 1 } }); }
真正容易被忽略的,是每次 reload 都得亲手写一遍 page: {curr: 1}——它不会继承、不会推断、不看 history、不读 localStorage,只看你这次传没传。少这一行,就等于没告诉 Layui:“我要从头查”。


















