Axios在控制器返回对象对象中发送formData

时间:2020-07-31 07:01:59

标签: javascript laravel vue.js vuejs2 axios

// Vuejs2 // Laravel v7.x

我向您求助,因为我封锁了,找不到解决方案。 我想在控制器中的对象中恢复数据。 在View.vue中,我发布了axios帖子

     data() {
        return {
          customer: {
             name: 'abc',
             login: 'def'
          },
          file: null
        }
    },methods: {
        submit(){
            let formData = new FormData();
            formData.append("customer", this.customer);
            formData.append("file", this.file);

            axios.post('/project/new',
                        formData, {
                            headers: {
                                "Content-Type": "multipart/form-data"
                            }
                        }).then(data => {
                        console.log(data.data);
                    });
        }
    }

我这样收集我的控制器

public function postProject(Request $request)
{
    return $request->customer;  //return [Object Object]
    return $request->customer->name;  //return Trying to get property 'name' of non-object
    return $request->customer['name']; //return Illegal string offset 'name'
    return $request->file;  //return [Object Object]
}

谢谢。祝你有美好的一天。

2 个答案:

答案 0 :(得分:2)

您不能使用.append将对象添加到FormData中。

https://developer.mozilla.org/en-US/docs/Web/API/FormData/append,该方法仅接受USVString或Blob作为值。其他所有内容都强制转换为String。

JavaScript中标准对象的字符串表示形式为[object Object]

您可以尝试JSON.stringify(this.customer)将其转换为其JSON表示形式。

答案 1 :(得分:0)

尝试$ request-> get('customer')或$ request-> input('customer')