为什么jquery和axios用法类似,但是请求时传参类型却不同?

  jquery默认 form Data(如:url?a=1形式);

  因为jquery在执行post请求时,会默认设置Content-Type为application/x-www-form-urlencoded,发送的参数为form Data形式,所以服务器能够正确解析;

  而使用原生ajax、axios请求时,如果不显示的设置Content-Type,axios默认发送数据时,数据格式是application/json,控制台参数里显示Request Payload(即 json格式),而并非我们常用的Form Data格式。

  既然我们知道axios post方法默认使用application/json格式编码数据,那么解决方案就有两种,一是后台改变接收参数的方法,另一种则是将axios post方法的编码格式修改为application/x-www-form-urlencoded,这样就不需要后台做什么修改了。
---------------------

改变接收参数的解决办法:

  1)URLSearchParams

var params = new URLSearchParams(); params.append('key1', 'value1'); //你要传给后台的参数值 key/value params.append('key2', 'value2'); params.append('key3', 'value3');

bug: ie浏览器完全不兼容。

2)qs  qs.stringfy(para)即可;
但是JSON.stringify和qs.stringify虽然都是序列化,效果却不同,如下:
1)JSON.stringify:    "{"a":"1","b":2}"
2)qs.stringify:     a=1&b=2
另,网上教程很多重新安装了 npm install qs --save, 需要注意的是axios里已经包含qs,不用重新安装;

3)In node.js, you can use the  querystring module as follows:
4)
改变header头的解决办法: headers和transformRequest配合使用;
const axiosInstance = axios.create({
   // axios实例配置
   timeout: 15000,
   method:  'post' ,
   headers: {
     'Content-Type' 'application/x-www-form-urlencoded'
   },
   transformRequest: [ function (data) {
     // 请求前参数序列化
     return  qs.stringify(data);
   }]
});

另附:axios参数里的params和data区别:

在使用axios时,要注意到配置选项中包含params和data两者,以为他们是相同的,实则不然。 
params用于get请求,是添加到url的请求字符串中的,即是发送请求的查询参数对象,对象中的数据会被拼接成 url?param1=value1&param2=value2。。
而data是添加到请求体(body)中的, 用于post请求。

参考:

https://github.com/axios/axios/blob/master/README.md#using-applicationx-www-form-urlencoded-format

转载于:https://www.cnblogs.com/juneling/p/10004255.html

vue axios传参报错的解决方法相关推荐

  1. wordpress上传文件报错的解决方法(413 Request Entity Too Large、超过upload_max_filesize文件中定义的php.ini值)

    报错:413 Request Entity Too Large 问题nginx是限制上传大小,解决方法如下: 打开nginx配置文件 nginx.conf, 路径一般是:/etc/nginx/ngin ...

  2. 解决POSTMAN传参报错,JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OB

    前言:使用POSTMAN自测代码以便前后端联调时,发送请求后,BOOM!!!服务器抛了个这样式的东西出来. Resolved [org.springframework.http.converter.H ...

  3. vue项目初始化时npm run dev报错webpack-dev-server解决方法

    vue项目初始化时npm run dev报错webpack-dev-server解决方法 参考文章: (1)vue项目初始化时npm run dev报错webpack-dev-server解决方法 ( ...

  4. vue项目Error: Cannot find module ‘xxx’类报错的解决方法

    现发现只要是报错 Error: Cannot find module 'xxx'(例如 Error: Cannot find module 'webpack')这类的问题都可以用下面的方法解决. 报错 ...

  5. K8S 1.18.0 以及KubeEdge 1.10.3 三机安装部署(含过程记录及遇到的报错和解决方法)

    因为网络上大多数教程只有部署相关的命令,而无输入命令后正确界面的显示样例,因此在参考网络上教程并跟随实现的过程中,我将过程进行截图记录,供大家参考.希望对大家有帮助~ 一. K8S部署 选用了三台虚拟 ...

  6. idea项目提交到gitee以及出现提交出现的 Push rejected报错的解决方法

    在提交项目到Gitee的时候出现:Push rejected  弹窗错误提示上传失败的解决方法. 今天就跟大家聊聊有关idea提交项目到gitee时出现 Push rejected报错的解决方法,希望 ...

  7. docker pull下载镜像时的报错及其解决方法

    docker pull下载镜像时的报错及其解决方法 参考文章: (1)docker pull下载镜像时的报错及其解决方法 (2)https://www.cnblogs.com/it-artical/p ...

  8. sqlserver 遇到以零作除数错误的处理 不报错的解决方法

    sqlserver 遇到以零作除数错误的处理 不报错的解决方法 参考文章: (1)sqlserver 遇到以零作除数错误的处理 不报错的解决方法 (2)https://www.cnblogs.com/ ...

  9. 使用Navicat连接MySQL时出现2059报错的解决方法

    使用Navicat连接MySQL时出现2059报错的解决方法 参考文章: (1)使用Navicat连接MySQL时出现2059报错的解决方法 (2)https://www.cnblogs.com/ir ...

最新文章

  1. Java---Socket编程UDP/TCP
  2. 【快乐水题】677. 键值映射
  3. 初学java andriod 软件安装与配置问题
  4. 通信-RS232、RS485、RS422
  5. 2021年零基础学Delphi 11开发极简教程
  6. asp.net购物商城系统
  7. 三相逆变器仿真matlab,在MATLAB中实现三相电压型逆变器仿真
  8. 如何调整gif动图的速度?1分钟在线调节gif动图速度
  9. Windows中命令行收集
  10. G1D17-研究方向rce45-49不快乐就去敲敲代码
  11. oracle中更改用户名,Oracle 更改用户名
  12. 考研复试英语自我介绍计算机,计算机复试英语自我介绍
  13. 【Pytorch】torch.nn.Conv1d()理解与使用
  14. python怎么制作游戏图片_Python游戏引擎开发(二):显示图片
  15. 黑龙江农垦科技职业学院喜迎寒假多校联赛2(快乐ak场)蒟弱部分题解
  16. 春招来了!找个互联网IT工作试试看?2021校招公司大全!
  17. DDR4 原理图设计、仿真和问题分析
  18. Psychopy | 第4期:实验数据的收集与处理
  19. 离线计算机知识,2016浙大计算机应用基础离线1.计算机基础知识题OK.docx
  20. 年轻人,你需要懂得 6 条成长规则

热门文章

  1. JVM类加载器分类和解析
  2. 管理类联考——逻辑——技巧篇——形式逻辑——秒杀思路
  3. CCPC-南阳比赛总结
  4. 【视频】深入浅出servlet现场教学系列之一
  5. java学习一站式资料下载(项目源码及视频)
  6. Android热修复-Nuwa使用
  7. Centos7中安装Python3
  8. python代码的注释贿一种方式、那就是使用井符号号_Python 代码的注释只有一种方式,那就是使用 # 符号。 (2.0分)_学小易找答案...
  9. Kali --VNC连接
  10. 【通知】广州传智播客网页平面学科学费价格调整公告