使用axios的post请求参数如下:
使用jq的ajax请求参数如下
axios的请求参数,后台无法request前端post的参数。
axios的代码如下:
axios.post('/', {
email: 'a@qq.com',
}).then(function(data) {
});
热门评论:
Carson 2017-9-29 1:00 回复:
请详详细po出你前后端的代码或sample代码。截图和其他描述可以在后面作为补充描述与问题,axios库本身不可能有问题。
网友回答:
royal_029 2017-9-29 1:29 回复:
已被采纳
出现这种情况是因为服务器要求POST
请求模式下需传Content-Type:application/x-www-form-urlencoded
格式的数据,axios
可以配合qs
库格式化数据。
import axios from 'axios';
import qs from 'qs';
let postData = qs.stringify({email: 'a@qq.com'})
axios.post(url,postData)</code></pre>
如果服务器接受JSON
格式的数据,不引用qs
库直接传默认的application/json
也可以。
-
jsoncode 2017-9-29 2:09 回复:royal_029
qs模块没有browser版本的吗?网上没找到下载的地方,github也没找到啊
-
穗乃果 2017-9-29 2:36 回复:royal_029
-
jsoncode 2017-9-29 2:41 回复:royal_029
嗯,多谢多谢,我用npm install qs,然后拷贝过来了,哈哈。我没有用webpack打包,是browser模式开发的。
-
Azath0th 2018-4-14 9:37 回复:royal_029
终于找到解决方式……泪流满面,特意登陆上来感谢
-
穗乃果 2017-9-29 1:21 回复:
楼上答非所闻。
很明显axios在帮你post JSON字符串,然而你期望的肯定是application/x-www-form-urlencoded
,因为jQuery.ajax默认就是这种格式。具体怎么做需要用qs.stringify,网上教程很多。
http://www.jianshu.com/p/b22d...
-
toBeTheLight 2017-9-29 1:33 回复:穗乃果
呵呵。Query String Parameters指的就是通过在URL中携带的方式提交的参数。
-
穗乃果 2017-9-29 2:13 回复:穗乃果
别没事就呵呵。。。
@royal_029 的答案可不是在url上拼参数,它的效果和$.ajax的post默认方式是一样的。
-
jsoncode 2017-9-29 2:22 回复:穗乃果
对,你说的是我想要的意思
-
toBeTheLight 2017-9-29 2:51 回复:穗乃果
你能拿post不拼串发一个query string parameters
的请求?
我说错了是axios转query params
这个我确实搞错了。
而query string parameters
只有在地址传参的时候才可能出现这种数据解析格式。
toBeTheLight 2017-9-29 1:06 回复:Query String Parameters
说明参数是拼到了url
地址上传过去的。
原有的jquery的ajax如果用的是post,说明本身设计就有问题。
你看axios.post有没有参数可以帮你拼上去,或者你手动拼。
Query String Parameters
指的就是通过在URL中携带的方式提交的参数。
跟content-type没有什么关系。
@royal_029 的答案应该是axios
转query params
序列化的正确方式。
陶留军 2017-10-16 10:20 回复:跟Content-Type是没有关系的,qs的方式可取,但要多安装一个模块,参照下面链接,只需要添加3行代码即可。axios的post最好再封装一下
https://taoliujun.github.io/2...
zouyaowen 2019-3-30 11:25 回复:application/x-www-form-urlencoded使用以下两种方式可以亲测可以
const params = new URLSearchParams();
params.append('name', 'abcdef');
params.append('age', 8899);
axios.post('http://127.0.0.1/study/cross/getData',
params
).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
let postData = qs.stringify({name: 'qsName',"age":22})
axios.post('http://127.0.0.1/study/cross/getData',
postData
).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
以上需要引入
import axios from 'axios';
import qs from 'qs';