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

Posted

技术标签:

【中文标题】如何使用 put 方法更新 vue 组件上的数据?【英文标题】:How can I using put method to update data on the vue component? 【发布时间】:2018-08-27 18:54:58 【问题描述】:

我的 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 方法更改为 put 方法。因为这用于更新个人资料

我是这样改变的:

axios.put(...

还有路线:

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

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

我该如何解决这个问题?

更新

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我在哪里定义_method: 'PUT'?我使用ajax发送数据。尝试完全更新您的答案 将其添加到您的 formData 变量中 好的。并且路线保持这样:Route::put('update', ...? 是的,应该可以正常工作。 POST 也可以使用,因为无论如何它都不是真正的 PUT 其实这个帖子也很好用。但是我把它换成 put 因为这个表格是用来更新数据的

以上是关于如何使用 put 方法更新 vue 组件上的数据?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js / Vuex + axios 发送多个 PUT 请求

如何更新手动安装的 vue 组件上的道具?

此路由不支持 PUT 方法。 Vue/laravel

从子组件更新数据 - Vue.js/Axios/Laravel

当我在 Vue JS 中按下父组件上的按钮时如何刷新子组件?

vue异步渲染