使用axios的post请求,请求参数好像有问题啊

使用axios的post请求参数如下:
图片描述

使用jq的ajax请求参数如下
图片描述

axios的请求参数,后台无法request前端post的参数。
axios的代码如下:

axios.post('/', {
    email: 'a@qq.com',
}).then(function(data) {
});
阅读 14.8k
5 个回答

出现这种情况是因为服务器要求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)

如果服务器接受JSON格式的数据,不引用qs库直接传默认的application/json也可以。

楼上答非所闻。
很明显axios在帮你post JSON字符串,然而你期望的肯定是application/x-www-form-urlencoded,因为jQuery.ajax默认就是这种格式。具体怎么做需要用qs.stringify,网上教程很多。
http://www.jianshu.com/p/b22d...

Query String Parameters说明参数是拼到了url地址上传过去的。
原有的jquery的ajax如果用的是post,说明本身设计就有问题。
你看axios.post有没有参数可以帮你拼上去,或者你手动拼。


Query String Parameters指的就是通过在URL中携带的方式提交的参数。
跟content-type没有什么关系。
@royal_029 的答案应该是axiosquery params序列化的正确方式。

跟Content-Type是没有关系的,qs的方式可取,但要多安装一个模块,参照下面链接,只需要添加3行代码即可。axios的post最好再封装一下

https://taoliujun.github.io/2...

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';
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏