如何使用 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.js/Axios/Laravel