vue axios传参报错的解决方法
今天有人问同一套后台系统为什么jquery可以正常使用,axios却报错呢,下面总结如下:
总的来说是jquery和axios传参类型不同,那为什么jquery和axios请求时传参类型不同?
1)jquery默认 form Data(如:url?a=1形式);
因为jquery在执行post请求时,会默认设置Content-Type为application/x-www-form-urlencoded,发送的参数为form Data形式,所以服务器能够正确解析;
2)而使用原生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');
querystring module as follows:const axiosInstance = axios.create({  // axios实例配置  timeout: 15000,  method: 'post',  headers: {    'Content-Type': 'application/x-www-form-urlencoded'  },  transformRequest: [function(data) {    // 请求前参数序列化    return qs.stringify(data);  }]});params用于get请求,是添加到url的请求字符串中的,即是发送请求的查询参数对象,对象中的数据会被拼接成url?param1=value1¶m2=value2。。而data是添加到请求体(body)中的, 用于post请求。
参考:
https://github.com/axios/axios/blob/master/README.md#using-applicationx-www-form-urlencoded-format
vue axios传参报错的解决方法的更多相关文章
- vue cnpm run dev 报错,解决方法
		
执行到 $ cnpm run dev 报如下错,但是实际上 我执行 npm -v 是5.0.4 其原因是nodejs里的版本不对,解决方法
 - Vue 项目在其他电脑 npm run dev 运行报错的解决方法
		
一个 Vue 项目从一台电脑上传到 github 上之后,再另外一台电脑上 git clone .并使用 npm run dev 或 npm run start 发生以下报错的解决方法. 报错原因 ...
 - vue项目初始化时npm run dev报错webpack-dev-server解决方法
		
vue项目初始化时npm run dev报错webpack-dev-server解决方法 原因:这是新版webpack存在的BUG,卸载现有的新版本webpack,装老版本就好webpack-dev- ...
 - vue.js 中使用(...)运算符报错的解决方法
		
vue.js 中使用(...)运算符报错的解决方法 Syntax Error:Unexpected token(XX:X) }, computed:{ ...mapGetters([ 'pageSiz ...
 - ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法
		
原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebServi ...
 - 网站eurl.axd报错的解决方法
		
网站eurl.axd报错的解决方法 错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET 4.0,本地ASP.NET 4.0 的组件会传递一个不能扩展的 URL到ASP.NET的管 ...
 - MySQL中遇到的几种报错及其解决方法
		
MySQL中遇到的几种报错及其解决方法 1.[Err] 1064 - You have an error in your SQL syntax; check the manual that corre ...
 - 如何自定义JSTL标签与SpringMVC 标签的属性中套JSTL标签报错的解决方法
		
如何自定义JSTL标签 1.创建一个类,从SimpleTagSupport继承 A) 通过继承可以获得当前JSP页面上的对象,如JspContext I) 实际上可以强转为PageContext II ...
 - windows下使用GNU make命令报错的解决方法
		
windows下使用GNU make命令报错的解决方法=> 错误信息:make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x ...
 
随机推荐
- Nginx在线服务状态下平滑升级或新增模块
			
nginx在使用过程中,有时需要在不影响当前业务的情况下,进行升级或新增模块.nginx的升级有两种方法:1.半自动化升级:2.手动升级 不过都需要先查看安装的nginx版本和配置信息,然后前往官网下 ...
 - (十七)super关键字(转)
			
--本文摘自孤傲苍狼博客. 一.super关键字
 - ansible软件部署
			
每一个软件或集群都创建一个单独的角色. mkdir -pv ansible/roles/{jdk,hadoop,spark}/{tasks,files,templates,meta,handlers, ...
 - Swift学习 (四)
			
5.枚举与结构体: 不必给枚举成员提供一个值.如果我们想要为枚举成员提供一个值(raw value),我们可以用字符串,字符,整型或浮点数类型. 1 2 3 4 5 6 7 enum CompassP ...
 - celery的log如何传递给django,由django管理
			
celery自己管理log目录 celery worker --autoscale=4,1 --app=erebus.celeryapp:app -l info -f /home/admin/outp ...
 - Ocelot+Consul 集群搭建实践
			
博客园已经有很多大神写过consul集群搭建了.大家都在玩,那我也不能托后退呢 不过自己研究下还是好的.毕竟每个人遇到的问题的不同 研究过才能说自己玩过consul,文章有部分名词解释是收集网络 Co ...
 - 字符串匹配算法---BF
			
Brute-Force算法,简称BF算法,是一种简单朴素的模式匹配算法,常用语在一个主串string 内查找一个子串 pattern的出现位置. 核心思想: i 遍历主串string i 每自增一次, ...
 - 阿里云ecs自动创建快照教程
			
最近在一个博客联盟的微信群里面看到经常有朋友问阿里云的ecs服务器怎么设置自动创建快照,也不知道最近是怎么了,看到问这个问题的朋友有有四五个左右了,今天就特意到博客里来费大家分享设置自动创建快照的方法 ...
 - MySQL的注入总结
			
0x01 MySQL 5.0以上和MySQL 5.0以下版本的区别 MySQL5.0以上版本存在一个叫information_schema的数据库,它存储着数据库的所有信息,其中保存着关于MySQL服 ...
 - nginx 为什么受欢迎?
			
优势:1.高并发 2.可扩展性 3.高可靠性 4.热部署 5.BSD许可证 如何做到以上优势呢?高并发:异步io非阻塞,占用更少资源,支持更多连接可扩展:模块化设计,第三方模块多高可靠:核心框架代码的 ...