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 相关文章推荐
基于逻辑运算的简单权限系统(实现) JS 版
Mar 24 Javascript
给Function做的OOP扩展
May 07 Javascript
js中settimeout方法加参数的使用实例
Feb 27 Javascript
JQuery球队选择实例
May 18 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
Jul 22 Javascript
异步加载JS、CSS代码(推荐)
Jun 15 Javascript
EasyUI Pagination 分页的两种做法小结
Jul 09 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
浅谈Vue初学之props的驼峰命名
Jul 19 Javascript
JS document文档的简单操作完整示例
Jan 13 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 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
php session 检测和注销
2009/03/16 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
解析php中memcache的应用
2013/06/18 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python装饰器用法示例小结
2018/02/11 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
python实现QQ批量登录功能
2019/06/19 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
宣传策划类求职信范文
2014/01/31 职场文书
我的理想演讲稿
2014/04/30 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
Golang 遍历二叉树
2022/04/19 Golang
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers