layui表格怎么修改请求方式为POST并传递JSON

落敏大大_4004

落敏大大_4004

2026-11-04

878人浏览

原创

layui table 的 method 参数仅支持 GET/POST 字符串,但默认以表单格式提交;要发 JSON,必须绕过自动参数拼接,通过 request 配置分页字段、parseData 适配响应结构,并用 fetch/axios 手动发起 JSON 请求,再以 data 和 count 填充表格。

layui表格怎么修改请求方式为post并传递json

layui table 的 method 参数只支持 GET 和 POST 字符串,但不直接支持 JSON 提交

layui 2.8+ 的 table.render() 确实允许设 method: 'post',但这只是让请求用 POST 方法发出去,**默认仍以 application/x-www-form-urlencoded 格式提交键值对**(如 page=1&limit=10),不是 JSON。想发 JSON,必须绕过 layui 内置的参数拼接逻辑。

用 request 和 parseData 拦截并重写请求流程

核心是放弃 layui 自动组装参数,改用 request 手动发起 fetch 或 axios 请求,并在 parseData 中适配返回结构。这是唯一稳定可控的方式。

常见错误现象:直接设 method: 'post' + contentType: 'application/json'(layui 不识别该配置项),结果请求体仍是表单格式,后端收不到 JSON。

  • 必须显式设置 request: { pageName: 'page', limitName: 'limit' },否则 layui 无法从响应中提取分页字段
  • parseData 必须返回含 code、msg、count、data 四个字段的对象,否则表格渲染失败
  • 若后端返回字段名不匹配(如 total 而非 count),要在 parseData 里做映射
table.render({
  elem: '#demo',
  url: '/api/list',
  method: 'post', // 仅用于触发 POST,实际不生效
  request: {
    pageName: 'page',
    limitName: 'limit'
  },
  parseData: function(res) {
    return {
      code: res.code === 0 ? 0 : 1,
      msg: res.message,
      count: res.total,
      data: res.data
    };
  },
  // 关键:用 done 替代 url 发起自定义请求
  done: function(res, curr, count) {
    // 避免首次加载重复请求,只在用户操作(翻页/搜索)时触发
    if (curr !== 1 || this.config.where || this.config.page) return;
    
    // 手动 POST JSON
    fetch('/api/list', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        page: 1,
        limit: 10,
        keyword: ''
      })
    }).then(r => r.json()).then(data => {
      table.reload('demo', {
        data: data.data,
        count: data.total
      });
    });
  }
});

更推荐:用 table.reload() 主动控制请求时机和载荷

把请求完全交给 JS 控制,比在 done 里 hack 更清晰。尤其适合带搜索、筛选等动态参数的场景。

使用场景:需要传复杂嵌套对象、数组,或需添加认证 token、加密字段等。

jm-jsjkxyjs02-zlm-405
jm-jsjkxyjs02-zlm-405

使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。

下载
  • 初始渲染时设 url: null,避免自动加载
  • 首次加载、翻页、搜索都调用 table.reload(),并在 where 中传原始 JSON 对象(layui 会把它序列化进请求体)
  • 但注意:where 在 method: 'post' 下仍走表单编码 —— 所以还得配合 beforeSend 拦截(需改源码)或直接弃用 url 改用 data 静态加载

真正干净的做法是:**彻底不用 layui 的自动请求,全部由外部 fetch/axios 处理,再用 data 和 count 填充表格**。这样 JSON 格式、header、错误重试全由你掌控,反而更简单。

容易被忽略的点:分页参数位置和后端约定

很多人卡在“明明发了 JSON,后端却收不到 page/limit”。原因往往是:layui 默认把分页参数放在 URL 查询字符串里(GET)或请求体表单里(POST),而你发 JSON 时没把它们塞进 JSON body。

必须确保 JSON body 中包含分页字段(如 {page: 1, limit: 10, ...}),且后端解析逻辑与之匹配。不能依赖 layui 自动注入 —— 它只在原生 POST 表单模式下才注入。

如果后端要求分页参数在 URL(如 /api/list?page=1&limit=10),而业务数据又要 JSON body,那就得用 GET + contentType 伪造成 JSON(不规范,慎用),或者让后端支持混合接收方式。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui表格 layui js json

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2823

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

6143

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

7070

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6878

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

983

5

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2255

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

3622

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1216

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

4159

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 13.1万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.4万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习