这里我百度了一下
原来是post传参方式不对
post里面的数据放在params里面,这样是有问题的,在使用axios时,要注意到配置选项中包含params和data两者,以为他们是相同的,实则不然。
因为params是添加到url的请求字符串中的,用于get请求。
而data是添加到请求体(body)中的, 用于post请求。
然后我把params改为了data,后台还是接收不到,查阅了很多资料,需要把Content-Type为application/x-www-form-urlencoded,
jquery在执行post请求时,会设置Content-Type为application/x-www-form-urlencoded,所以服务器能够正确解析,而使用原生ajax、axios请求时,如果不显示的设置Content-Type,那么默认是text/plain,这时服务器就不知道怎么解析数据了,所以才只能通过获取原始数据流的方式来进行解析请求数据。
网上百度 的解决办法:
第一种
二、使用qs
安装qs,在 main.js里引入
import axios from ‘axios’;
import qs from ‘qs’;
Vue.prototype.$qs = qs;
在vue组件里面请求方法
let postData = this.$qs.stringify({
key1:value1,
key2:value2,
key3:value3,
});
this.$axios({
method: ‘post’,
url:‘url’,
data:postData
}).then((res)=>{
});
另外做个对比
未转换data格式的请求参数:
转换data后的的请求参数:
看我操作
首先使用第2种
npm install qs --save
这个是因为没安装qs报错
安装了以后,还是500
第1种:
选择
首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。
很多时候,我们用 Ajax 提交数据时,也是使用这种方式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。
400 Request 由于客户端请求有语法错误,不能被服务器所理解。
看来都不好使呢?
传个别的试试?
500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
但是我这样提交是可以的