layui分页“刷新”按钮默认跳首页,因table.reload()或laypage.render()重置curr值;需显式传入当前页码:table.config['id']?.page?.curr||1,或用sessionstorage缓存并读取curr,确保where参数完整合并。

点击 Layui 分页的“刷新”按钮时,默认会跳回第一页,这不是按钮没写对,而是 table.reload() 或 laypage.render() 的分页状态被重置了。要只刷新当前页,关键不是换按钮样式,而是确保分页参数里的 curr 值不丢失、不归零。
table.reload() 刷新表格时保持当前页码
Layui 表格的 reload() 方法默认把 page.curr 设为 0,触发跳首页。你必须显式传入当前页码,且不能靠 DOM 读取或手写数字。
- 从
table.config中安全取值:比如表格 ID 是userTable,就用table.config['userTable']?.page?.curr || 1 - 如果表格还没初始化完成(比如刚进页面就点刷新),
table.config['userTable']可能是undefined,加个空值判断更稳 - 不要用
$('input[lay-page]').val()或$('.layui-laypage-curr em').text()——这些是渲染结果,异步下可能滞后或错位 - 示例写法:
const curr = table.config['userTable']?.page?.curr || 1;<br>table.reload('userTable', {<br> page: { curr },<br> where: { /* 查询条件 */ }<br>});
自定义刷新按钮绑定到 laypage 实例
如果你用的是独立 laypage(非表格内嵌),没有 table 实例可依赖,就得自己维护当前页码。Layui 不自动暴露当前页变量,得靠事件监听或手动存取。
- 在
laypage.render()的jump回调里缓存当前页:sessionStorage.setItem('userListPage', curr) - 点击刷新按钮时读取:
const curr = parseInt(sessionStorage.getItem('userListPage')) || 1 - 再调用
laypage.render({ curr, ... })重新渲染,注意传完整配置(包括count、limit等),否则分页逻辑会异常 - 别直接调
location.reload()或$('.layui-laypage-btn').click()——前者整页刷,后者不可控,可能触发多次请求
为什么 src 重设法不适合 laypage 刷新
有人想套用 iframe 刷新思路(比如改 src),但 laypage 本身不加载远程页面,它只是生成 DOM 分页控件。所谓“刷新当前页”,本质是重新发起一次带 page=当前页码 的数据请求,然后重绘表格或列表内容。
- 混淆点:把“分页控件刷新”和“内容区域刷新”当成一回事。实际要刷的是后端接口返回的数据,不是分页 HTML
- 如果用了
request自定义数据接口,确保返回的count准确——页码超出范围时,Layui 会静默跳转到最后一页,而不是报错,容易误判为“没刷成功” - 批量删除后刷新当前页,也应走同样逻辑:先拿到当前
curr,再 reload 表格或重发 laypage 请求,而不是简单调load(当前页)却漏传其他 where 条件
最易被忽略的一点:table.reload() 的 where 参数是合并而非覆盖。如果你之前搜过 name: '张',又只传 {status: 'active'},请求参数其实是两者叠加。真要清旧参,得显式传完整对象,或者用 initSort 重置后再 reload。











