axios异步提交表单数据的几种方法


Posted in Javascript onAugust 11, 2019

踩坑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, 它的长下面这个样子

axios异步提交表单数据的几种方法

可以看到,它的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中把提交的属性解析出来

axios异步提交表单数据的几种方法

其他类型的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)
  })
 }

它长这样

axios异步提交表单数据的几种方法

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
  })
 }
---

axios异步提交表单数据的几种方法

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
  })
 }

axios异步提交表单数据的几种方法

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异步提交表单数据的几种方法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
Nov 04 Javascript
javascript getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
javascript 解析url的search方法
Feb 09 Javascript
jQuery客户端分页实例代码
Nov 18 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
Dec 04 Javascript
你未必知道的JavaScript和CSS交互的5种方法
Apr 02 Javascript
JavaScript实现自动变换表格边框颜色
May 08 Javascript
javascript中apply、call和bind的使用区别
Apr 05 Javascript
jquery tmpl模板(实例讲解)
Sep 02 jQuery
vue打包相关细节整理(小结)
Sep 28 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
JS实现电话号码的字母组合算法示例
Feb 26 Javascript
node.js实现带进度条的多文件上传
Mar 27 #Javascript
基于Express框架使用POST传递Form数据
Aug 10 #Javascript
Vue实现点击显示不同图片的效果
Aug 10 #Javascript
vue+eslint+vscode配置教程
Aug 09 #Javascript
一个手写的vue放大镜效果
Aug 09 #Javascript
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 #Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
Aug 09 #Javascript
You might like
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
react-native封装插件swiper的使用方法
2018/03/20 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
python爬虫要用到的库总结
2020/07/28 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
实习单位推荐信
2015/03/27 职场文书
赢在执行观后感
2015/06/16 职场文书
圣诞晚会主持词
2015/07/01 职场文书
教师节祝酒词
2015/08/11 职场文书
python编写函数注意事项总结
2021/03/29 Python
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
springboot用户数据修改的详细实现
2022/04/06 Java/Android