在VueJS中使用axios发送FormData()在Laravel中返回空数组

时间:2019-01-07 10:51:20

标签: laravel vue.js axios form-data

我正在尝试使用带有axios的FormData()发布数据。 Laravel是我的后端。 当我尝试dd(死并转储)我的$request->all()在控制器中时,我得到一个空数组[]

这是我处理帖子的代码:

data() {
    let formData = new FormData();

    formData.append('first_name', 'Max');
    formData.append('first_name', 'Sample');

    return formData;
}

submit(requestType, url) {
    console.log(this.data().get('first_name')); // Output is correctly 'Max'

    return new Promise((resolve, reject) => {
        axios[requestType](url, this.data())
            .then(response => {
                this.onSuccess(response.data);

                resolve(response.data);
            })
            .catch(error => {
                this.onFail(error.response.data)

                reject(error.response.data);
            });
    });
} 

sendData() {
    const id = 123;
    this.submit(patch, '/persons/' + id);
}

但是,如果我这样格式化数据:

data() {
    let data = {
        'first_name': 'Max',
        'last_name': 'Sample'
    };

    return data;
}

我在控制器中的dd($request->all()输出正确。

编辑

我找到了问题的原因。它与HTTP方法patch有关。如果我使用post,则数据发送成功。它必须与要发送的标头有关,但我找不到解决方案。

0 个答案:

没有答案