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

Suc*_*Man 0 laravel vue.js vue-component axios vuejs2

我的 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))
Run Code Online (Sandbox Code Playgroud)

我的路线是这样的:

Route::post('update', 'member\UserController@update')->name('member.profile.update');
Run Code Online (Sandbox Code Playgroud)

如果脚本执行,它工作。我成功发送了数据

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

我这样改变:

axios.put(...
Run Code Online (Sandbox Code Playgroud)

和路线:

Route::put('update', ...
Run Code Online (Sandbox Code Playgroud)

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

我怎么解决这个问题?

更新

如果我console.log(user),结果是这样的:

在此处输入图片说明

小智 5

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

data: {
    ...
    _method: 'PUT',
    ...
}
Run Code Online (Sandbox Code Playgroud)

你可以做:

formData.append('_method', 'PUT')
Run Code Online (Sandbox Code Playgroud)

使用 axios 的完整示例:

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

表单方法欺骗