如何使用put方法更新vue组件上的数据?

时间:2018-03-19 09:05:52

标签: laravel vue.js vuejs2 vue-component axios

我这样的ajax axios:

let formData = new FormData()
formData.append('file', user.avatar)
formData.append('selected_data', JSON.stringify(user))
axios.post('/member/profile/update', 
    formData, {
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    }
)
.then(response => cb(response))
.catch(error => ecb(error))

我的路线是这样的:

Route::post('update', 'member\UserController@update')->name('member.profile.update');

如果脚本已执行,则可以正常运行。我成功获得了数据

但是在这里,我想改变post方法来放置方法。因为这用于更新配置文件

我这样改变:

axios.put(...

路线:

Route::put('update', ...

我没有成功获取数据。发送的数据为空

我该如何解决这个问题?

更新

如果我console.log(user),结果如下:

enter image description here

1 个答案:

答案 0 :(得分:2)

Laravel对PUT使用方法欺骗,使用axios.post并将以下内容添加到您的请求数据中:

data: {
    ...
    _method: 'PUT',
    ...
}

你可以这样做:

formData.append('_method', 'PUT')

使用axios的完整示例:

axios.post('/user', { _method: 'PUT', foo: 'bar' })
  .then(function (response) { console.log(response); })
  .catch(function (error) { console.log(error); });

Form method spoofing