Отправка FormData () с помощью axios в VueJS возвращает пустой массив в Laravel - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь опубликовать свои данные, используя FormData () с axios. 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() в моем контроллере.

EDIT

Я нашел причину своей проблемы. Это связано с методом HTTP patch. Если вместо этого я использую post, данные отправляются успешно. Это должно быть связано с отправляемыми заголовками, но я пока не смог найти решение.

...