vuejs 和 laravel 中的路由不支持 post 方法
Posted
技术标签:
【中文标题】vuejs 和 laravel 中的路由不支持 post 方法【英文标题】:Post method is not supported for route in vuejs and laravel 【发布时间】:2021-01-14 18:35:12 【问题描述】:我想在确认点击时将状态更新为 1。我正在使用 vue js 和 laravel。我使用 axios.post 来访问 API。但是当我点击确认更新状态时,我收到不支持路由帖子的错误消息。
请帮我找出我的错误。
unconfirmedareas.vue
ConfirmArea(index)
var confirmArea = confirm("Are you sure you want to confirm this area?");
if(confirmArea)
axios.post('/admin/areaConfirmed/'+index,
status:1,
).catch((response) =>
this.$toast.error(response.data.message, 'Error', timeout: 3000);
).then((data) =>
this.$toast.success(data.message, 'Success', timeout: 3000);
this.fetchUnconfirmedSellers();
);
,
web.php
Route::post('areaConfirmed','SellerController@confirmArea')->name('areaConfirmed');
sellercontroller.php
public function confirmArea(Request $request, $id)
$confirmArea = Areas::find($id);
$confirmArea->status = $request->status;
$confirmArea->save;
return response()->json([
'message' => 'Area has been confirmed'
]);
【问题讨论】:
【参考方案1】:1- 您必须像这样将 id 添加到您的路线中:
Route::post('areaConfirmed/id','SellerController@confirmArea')->name('areaConfirmed');
因为没有 id 参数的路由是不同的路由。
2 - 这也是获取 POST 输入的正确方法 $request->post('param_name') :
$confirmArea->status = $request->post('status');
【讨论】:
【参考方案2】:正如 FAROUK BLALOU 所说,如果你没有在配置的前缀中添加 'admin' 部分,那么Route::post('admin/areaConfirmed/id','SellerController@confirmArea')->name('areaConfirmed');
应该是这样的。
【讨论】:
以上是关于vuejs 和 laravel 中的路由不支持 post 方法的主要内容,如果未能解决你的问题,请参考以下文章
为啥来自 Vuejs 的 Laravel 8 的 AJAX POST 请求会引发 405(不支持的方法)错误?
如何在 laravel 5.3 + VueJs Routes 中导入外部组件