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延迟加载
Mar 09 Javascript
Prototype使用指南之base.js
Jan 10 Javascript
jQuery学习笔记之jQuery的动画
Dec 22 Javascript
jQuery的图片滑块焦点图插件整理推荐
Dec 07 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
Jul 19 Javascript
js获取文件里面的所有文件名(实例)
Oct 17 Javascript
初探js和简单隐藏效果的实例
Nov 23 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
May 28 jQuery
小程序:授权、登录、session_key、unionId的详解
May 15 Javascript
webpack中的模式(mode)使用详解
Feb 20 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
JS实现图片切换特效
2019/12/23 Javascript
javascript实现画板功能
2020/04/12 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
Python使用MD5加密字符串示例
2014/08/22 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
基于Python实现用户管理系统
2019/02/26 Python
python抖音表白程序源代码
2019/04/07 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
python selenium xpath定位操作
2020/09/01 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
幼儿园教师岗位职责
2014/03/17 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
2016年五一促销广告语
2016/01/28 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
Go 语言中 20 个占位符的整理
2021/10/16 Golang