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 相关文章推荐
滚动经典最新话题[prototype框架]下编写
Oct 03 Javascript
一次失败的jQuery优化尝试小结
Feb 06 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
May 21 Javascript
jQuery之排序组件的深入解析
Jun 19 Javascript
js获取事件源及触发该事件的对象
Oct 24 Javascript
ie 7/8不支持trim的属性的解决方案
May 23 Javascript
jQuery简单tab切换效果实现方法
Apr 08 Javascript
20分钟打造属于你的Bootstrap站点
Jul 27 Javascript
用Vue.js实现监听属性的变化
Nov 17 Javascript
vuejs父子组件之间数据交互详解
Aug 09 Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 Javascript
vue实现锚点定位功能
Jun 29 Vue.js
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实现AES256加密算法实例
2014/09/22 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
Win8下python3.5.1安装教程
2020/07/29 Python
django主动抛出403异常的方法详解
2019/01/04 Python
python实现月食效果实例代码
2019/06/18 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
Tensorflow累加的实现案例
2020/02/05 Python
Python调用C语言程序方法解析
2020/07/07 Python
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
电子商务专业个人的自我评价分享
2013/10/29 职场文书
初一生物教学反思
2014/01/18 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python