我目前正在使用vue-resource在我的webpack项目中执行一些ajax调用。一旦我做了#34;得到"调用所有工作完美,但当我尝试一个帖子时我的PHP没有得到任何参数,如果我尝试做var_dump($ _ POST)结果是一个空数组。 我的代码非常基础:
let data = {req: 'req_tipe', ch: 001 };
this.$http.post('compute.php', data).then(response => {
//do stuff with response if ok
},
response => {
//do stuff about error
});
我无法弄清楚我错过了什么
更新 我对axios和vue-axios做了同样的事,但我的问题仍然存在: 没有帖子参数
let data = {req: 'req_tipe', ch: 001 };
this.axios.post('compute.php', data).then(response => {
//do stuff with response if ok
},
response => {
//do stuff about error
});
答案 0 :(得分:4)
也许你可以改变如下:
let data = new FormData();
data.append('req','req tipe');
data.append('ch','001');
this.axios.post('compute.php', data).then(response => {
//do stuff with response if ok
},
response => {
//do stuff about error
})
试一试,或参阅issues 318了解详情。
答案 1 :(得分:0)
问题是,您使用内容类型“ application / json”执行POST请求,这是将对象作为数据发送时Axios中的默认设置。
PHPS $ _POST仅在使用application / x-www-form-urlencoded作为内容类型并将数据作为Querystring发送时发送请求。
在使用像qs之类的库时,应该可以进行以下操作:
sub
当输入数据是查询字符串时,axios将自动使用正确的内容类型。
您还可以使用json数据,但是随后您必须将PHP后端更改为类似这样的内容:
var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });
诸如Symphony之类的某些框架可以自动处理此问题。