通过axios post call传递params

时间:2017-02-14 09:59:23

标签: javascript ajax post vue.js axios

我目前正在使用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
    });

2 个答案:

答案 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之类的某些框架可以自动处理此问题。