Axios传递对象时无法进行POST请求

5

我正在尝试在Vue.js应用中使用axios进行POST请求到本地API,但响应返回的数据为空。使用Postman工具对API进行POST请求正常工作。以下是我的代码:

var the_data = {
    title: 'This is title',
    description: 'this is description'
}

axios.post('/api/snippets/insert', the_data)
.then(function (response) {
    console.log(response);
})
.catch(function (error) {
    console.log(error);
});

在API端,我使用了一个简单的PHP脚本,并使用以下代码打印整个 $_POST 请求数据。
var_dump($_POST);

但是这返回了一个空数组。


我也遇到了这个问题。Axios不会以你期望的形式发送POST数据。你需要使用类似于https://github.com/ljharb/qs的东西,然后使用`axios.post('/api/snippets/insert', qs.stringify(the_data))`。 - connexo
https://cdnjs.com/libraries/qs - connexo
结果表明,它不应该以老式的方式使用。我建议您使用 JSON.stringify(the_data) 或者如果这不起作用,可以使用老牌的 jQuery $.param(the_data) https://api.jquery.com/jquery.param/ - connexo
将以下与编程有关的内容从英语翻译成中文。只返回翻译后的文本:将其添加到答案部分,以便我可以标记为已回答。 - aslamdoctor
CDN 应该工作并创建 Qs 对象,而不是 qs - connexo
显示剩余4条评论
1个回答

4
我也遇到了这个问题。Axios不会以你期望的形式发送POST数据。您需要使用类似于http://github.com/ljharb/qs这样的工具,然后使用axios.post('/api/snippets/insert', Qs.stringify(the_data))。请注意,此版本使用的是cdnjs上的Qs而不是qs
替代qs的方法可以是JSON.stringify()或jQuery的$.param()

我有一个Rails服务器拉取数据,我使用以下形式获取数据:{"{"name":"moo","dob":"5/10/2012","street":"123 street","apt_number":"","city_state_zip":"moo moo","email":"moo@moo.com","home_phone":"123-456-7890"}"=>nil}。axios.post('http://localhost:3000/disclosure_forms', JSON.stringify(this.form), 'json') - Chris Habgood
2
只有 Qs.stringify 起作用。JSON.stringify() 不起作用。不确定其中的原因。 - Yang Wang
我也一直在苦恼JSON.stringify(),并且一直得到一个空数组。我会尝试使用Qs.stringify。 - iamface
使用qs对我仍然没有用。最终我在我的PHP脚本中添加了$postdata = file_get_contents("php://input");,并且成功获取到了数据。 - iamface

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接