layui表格默认仅识别res.code === 0为成功,非0值(如200、"success"、true)会导致空白渲染;需通过response配置或parsedata函数适配后端不一致字段与状态码。
layui 表格默认只认 res.code === 0 为成功,后端返回 200、"success"、true 或其他非 0 值时,表格直接跳过解析、空白渲染且不报错——这不是 bug,是硬编码逻辑。
response.statusCode 怎么配才生效
用 response 配置可绕过 parseData,但仅适用于状态码字段名和值都固定的情况。它不处理字段名错位(比如后端叫 status 而不是 code),也不补缺失字段。
-
statusName必须严格匹配后端字段名,比如后端返回{"status": 200},就得写statusName: 'status' -
statusCode是“成功阈值”,填200就代表只要res.status === 200就算成功,不校验res.code -
dataName、countName、msgName也得一一对应,比如后端用rows存列表,就得写dataName: 'rows' - 一旦字段名对不上,或后端没返回
count字段,分页器就显示0 条,data仍可能为空
parseData 是唯一兜底方案
当后端字段五花八门(list / items / payload.data)、状态码类型混杂(数字/字符串/布尔)、或缺 count 时,parseData 是唯一能稳住的入口。它接管全部解析逻辑,但必须手动补全四字段。
- 返回对象必须含
code、msg、count、data四个键,缺一表格就空白 -
code必须是数字,res.code === 0 ? 0 : 1比!!res.code更安全(避免false、""被转成0) -
count不能为undefined,后端没返回时建议 fallback 到res.data?.length ?? 0或预估总数 -
data字段要防御式取值:res.list ?? res.rows ?? res.payload?.data ?? [],避免Cannot read property 'length' of undefined
reload 时 parseData 容易漏掉
调用 table.reload() 重载表格时,如果原始 render 没传 parseData,reload 默认不会继承——哪怕你只改了 where 参数,也会退回到默认解析逻辑,导致表格突然空白。
- 所有
table.reload()调用必须显式带上parseData函数,不能省略 - 别把
parseData写成内联函数(如parseData: function(res){...}),应抽成变量复用,否则 reload 里重复写易出错 - 如果用了
response配置,reload 时也要同步传过去,不然会失效
最麻烦的不是写不对,而是后端字段名和状态码类型在不同接口间不统一——parseData 里那一堆 ?? 和 ?.length 不是过度设计,是真实项目里每天都在踩的坑。











