axios异步提交表单数据的不同形式
2019-08-10 23:46
2441 查看
踩坑Axios提交form表单几种格式
前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSecurity,使用postman测试后端的权限接口时发现都正常,但是使用vue+axios发送异步的请求后端一直获取不出axios提交的form表单的数据,爬坑两个半钟头找到了答案
axios用post异步形式提交的数据和我们直接使用from表单提交的数据的格式(Form Data格式)是不一样的,在下面列举
默认格式Request Payload
直接使用axios发送异步请求,没任何处理的代码如下:
const service = axios.create({}) doLogin (pojo) { return request({ url: '/api/user/login', method: 'post', data: pojo })
这种方式提交的表单格式是默认是RequestPayload, 它的长下面这个样子
可以看到,它的Contet-type是
"Content-Type": "application/json;"
但是后台的SpringSecurity对这种结果可不买单,在Request中解析不出任何数据来
处理成Form Data格式
使用插件qs, 安装命令如下:
npm install --save qs
请求编码:
const service = axios.create({}) doLogin (pojo) { return request({ url: '/api/user/login', method: 'post', data: qs.stringify(pojo) }) } 或者 doLogin (pojo) { return request({ url: '/api/user/login', method: 'post', data: pojo , transformRequest: [function (data) { data = qs.stringify(data); return data; }], }) }
经过这样处理的表单数据长成下面的这样, 这也是我们最常用的Form Data格式,这种格式的数据可以从后台的HttpRequest中把提交的属性解析出来
其他类型的Content-Type对应的表单数据格式
const service = axios.create({ headers: { "Content-Type": "multipart/form-data; charset=utf-8;" } }) doLogin (pojo) { return request({ url: '/api/user/login', method: 'post', data: qs.stringify(pojo) }) }
它长这样
const service = axios.create({ headers: { "Content-Type": "multipart/form-data; charset=utf-8;" } }) doLogin (pojo) { return request({ url: '/api/user/login', method: 'post', data: pojo }) } ---
const service = axios.create({ headers: { "Content-Type": "multipart/form-data; charset=utf-8;" } }) doLogin (pojo) { return request({ url: '/api/user/login', method: 'post', data:pojo }) }
const service = axios.create({ headers: { "Content-Type": "application/x-www-form-urlencoded; charset=utf-8;" } }) doLogin (pojo) { return request({ url: '/api/user/login', method: 'post', data: qs.stringify(pojo) }) }
相关文章推荐
- axios发送post请求,提交图片类型表单数据方法
- yii框架表单模型使用及以数组形式提交表单数据示例
- 异步提交一张或多张图片和表单数据
- AJAX异步提交表单(表单数据有文件流、字符串)
- 根据select选项,显示不同的表单,进而提交显示的数据
- Django网站建设-模板复用、数据展示、分页、表单异步提交
- form表单序列化为json数据,方便异步提交表单
- Yii表单模型使用及以数组形式提交表单数据
- yii框架表单模型使用及以数组形式提交表单数据示例
- 表单异步提交不返回响应数据总结
- jq 利用ajax异步提交所有表单数据,并且回调
- ajax(原生JavaScript)异步提交表单数据
- 让axios发送表单请求形式的键值对post数据
- form表单异步提交序列化表单数据
- Form 表单实现多个Action 请求,将表单数据提交到不同请求
- 表单中多个请求参数名字相同,服务器到底获取的是哪个请求参数的值,表单的action和get和post提交方式的关系以及提交数据的不同点
- (23)ExtJS之表单数据异步提交
- 使用Jquery的Ajax异步提交有二进制数据的表单实现方案
- Android OkHttp3(完美封装)Get异步获取数据、Post异步获取数据、Form表单提交、文件下载
- .net MVC 用jquery读取表单数据,AJAX异步提交表单例子