network面板中请求未发出、状态码异常或响应体为html/空字符串,90%非前端代码错误而是请求失败;layui表格要求后端返回含code、msg、count、data四字段的json,data须为数组、code/count须为数字,field需与后端字段严格一致,避免length等干扰属性。

看 Network 面板里请求发没发出、状态码和响应体
“No data”或“接口异常”提示,90% 的情况根本不是前端代码写错,而是请求压根没成功。先打开浏览器开发者工具的 Network 标签页,筛选 XHR,找到对应表格的请求:
- 如果连请求记录都没有 → 检查
elem是否指向一个还不存在的 DOM 节点(比如table.render执行太早,div#demo还没插入页面) - 如果有请求但状态码是
404→ 确认url是绝对路径还是相对路径,后端接口是否真实存在、路由是否配对(例如 Spring Boot 类上写了@RequestMapping("/api"),方法又写@GetMapping("/list"),完整路径必须是/api/list) - 如果状态码是
502、401或0(跨域/网络中断)→parseData不会触发,只能靠error回调捕获,此时响应体可能是 HTML 错误页或空字符串 - 如果状态码是
200但 Preview 显示开头 → 大概率被重定向到登录页或网关错误页,检查 Response Headers 中的Location字段
确认后端返回结构是否符合 Layui 默认要求
Layui 表格默认只认四字段顶层 JSON:code、msg、count、data。缺一个或类型不对,就会静默失败。
-
data必须是数组(哪怕空数组[]),不能是对象、null或字符串 -
code必须是数字,非0即失败;count也必须是数字(不能是字符串"100") - 后端若返回纯数组(如
[{"id":1}])或仅包裹data(如{"data":[...]}),Layui 会直接报“接口异常” - 用
parseData做兼容转换时,必须return一个含这四个键的对象,漏写return或返回了undefined,表格就卡住不渲染
检查 cols 中 field 和后端字段名是否严格一致
字段名大小写、下划线/驼峰、特殊字符(如短横线)不匹配,会导致某列为空;整行所有 field 都取不到值,视觉上就像“没数据”。
- 用
console.log(res.data[0])打印第一行原始数据,逐个验证row['user_name']、row['userName']是否能取到值 - 字段含短横线(如
create-time)时,field写成'create-time',但取值必须用方括号语法:row['create-time'],不能用点号 - 避免在
field中写'user.name'—— Layui 不支持嵌套取值,需改用templet函数手动提取 - 字段名为 JavaScript 关键字(如
class、default)时,后端需重命名(如class_name),否则解析阶段可能被意外覆盖或忽略
留意 length 字段等隐藏陷阱
某些后端返回的数据中带 length 属性(例如从数据库 ORM 直接映射出来的对象),Layui 在内部遍历时会把它当数组长度处理,导致 length: 0 的行被跳过,表面看就是“部分数据不显示”。
- 在
parseData中对res.data做一次清洗:data.map(item => { delete item.length; return item; }) - 同理,检查是否有其他干扰属性:如
__ob__(Vue 响应式)、_id(MongoDB)、$$hashKey(Angular)等,都建议在parseData中剔除 - 别依赖后端“保证字段干净”,前端做一层防御性处理成本更低、更可控
field 少了个下划线,或者 count 被后端转成了字符串,又或者 length 字段悄悄吃掉了一半数据 —— 这些细节在 Network 里看不到,得靠 console.log 和逐字段比对才能揪出来。











