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 相关文章推荐
根据地区不同显示时间的javascript代码
Aug 13 Javascript
jquery ajax 简单范例(界面+后台)
Nov 19 Javascript
通过onmouseover选项卡实现img图片的变化
Feb 12 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
js+ajax实现获取文件大小的方法
Dec 08 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
May 17 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
Mar 09 Javascript
Angular 如何使用第三方库的方法
Apr 18 Javascript
如何以Angular的姿势打开Font-Awesome详解
Apr 22 Javascript
vue实现多组关键词对应高亮显示功能
Jul 25 Javascript
JS实现电商商品展示放大镜特效
Jan 07 Javascript
JavaScript点击按钮生成4位随机验证码
Jan 28 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定义字符串的四种方式详解
2018/02/06 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
教你安装python Django(图文)
2013/11/04 Python
pyside写ui界面入门示例
2014/01/22 Python
Python解析nginx日志文件
2015/05/11 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
机械绘图员岗位职责
2013/11/19 职场文书
五一服装活动方案
2014/01/11 职场文书
高二物理教学反思
2014/02/08 职场文书
幼儿评语大全
2014/04/30 职场文书
研究生求职自荐书
2014/06/23 职场文书
公司员工活动策划方案
2014/08/20 职场文书
政协工作总结2015
2015/05/20 职场文书
高二英语教学反思
2016/03/03 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python