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_07_理解instanceof实现原理
Oct 15 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
js 剪切板应用clipboardData详细解析
Dec 17 Javascript
Javascript中this的用法详解
Sep 22 Javascript
jquery判断输入密码两次是否相等
Apr 22 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
Jan 12 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
Dec 02 Javascript
vue在手机中通过本机IP地址访问webApp的方法
Aug 15 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
JavaScript实现省市区三级联动
Feb 13 Javascript
OpenLayers3实现对地图的基本操作
Sep 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返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
Python实现简单状态框架的方法
2015/03/19 Python
python实现图片处理和特征提取详解
2017/11/13 Python
python 画函数曲线示例
2019/12/04 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
美国智能家居专家:tink
2019/06/04 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
岗位竞聘书范文
2014/03/31 职场文书
初中学生期末评语
2014/04/24 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
2016春节放假通知范文
2015/08/18 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python