Layui表格搜索必须用函数式where并手动取DOM值,reload时需重置page.curr=1,GET/POST参数分别从req.query或req.body获取,外置搜索框须确保DOM存在且ID稳定。

直接用 table.render 的 where 参数传参,后端收 req.query(GET)或 req.body(POST),别绕弯子写前端过滤。
where 必须是函数,否则参数永远不更新
很多人初始化表格时写死 where: { keyword: 'xxx' },结果搜索框一输内容,发出去的还是初始值。Layui 只在首次加载时读一次这个对象;后续 reload 不会重新取值。
-
where要写成函数:where: () => ({ q_name: $('#search-name').val().trim() }) - 函数内必须手动取 DOM 值,不能依赖表格内部状态
- 多个条件建议统一收集:
return { q_name, status_code: $('#status').val(), start_time: $('#start').val() }; - 空字符串要不要传,得看后端约定——有些接口要求字段存在但值为空,有些则直接 omit 字段
reload 时必须重置 page.curr = 1
搜索后还停在第 5 页,而新数据总共才 3 页,结果就是白屏。这不是 bug,是你没告诉 Layui “从头开始”。
- 点击搜索按钮时,必须显式传
page: { curr: 1 } - 示例:
table.reload('userTable', { where: { q_name: val }, page: { curr: 1 } }) - 漏掉这句,
where再对也看不到结果 - 如果用了自定义分页器,还要同步更新它的显示逻辑,否则页码数字和实际数据错位
GET 还是 POST?后端得按请求方式接参数
Layui 默认用 GET 拼 query,所以后端要从 req.query 里取;如果你改了 method: 'post',就得从 req.body 取,且注意 body-parser 配置。
- 确认请求方式:
method: 'get'(默认)或method: 'post' - GET 下,
where字段自动拼进 URL,如/api/users?q_name=张&limit=10&curr=1 - POST 下,
where作为 payload 发送,Content-Type 默认是application/x-www-form-urlencoded;若需 JSON,得配contentType: 'application/json'并手动JSON.stringify - 后端框架(如 Express、Koa)要确保对应中间件已启用,否则
req.body是空对象
搜索框联动时,DOM ID 和取值时机最容易出错
外置搜索框(比如表格上方独立 input)不是“自动绑定”的,你得自己管好它是否渲染完成、是否被 Vue/React 动态删掉、有没有被其他 JS 清空过值。
- 确保搜索框有稳定
id,比如id="search-name",别用 class 或动态生成的 ID - 在
table.render()执行前,该 input 必须已存在于 DOM 中 - 如果用 jQuery 动态插入搜索框,要在
table.render()前调用form.render()同步表单状态 - 防抖不是必须的,但高频输入下,
where函数会被反复执行——只要不触发 reload 就没事;reload 本身应只由按钮或回车触发
真正卡住人的往往不是代码怎么写,而是 reload 后表格刷新了,但搜索框里的文字没清、上次选中的行还勾着、分页器总条数没变——这些都不是 Layui 的责任,它只管表格本身。你要同步的 DOM 状态,得自己动手。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!









