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 中的不同语言页面交互

为啥来自 Vuejs 的 Laravel 8 的 AJAX POST 请求会引发 405(不支持的方法)错误?

如何在 laravel 5.3 + VueJs Routes 中导入外部组件

将 VueJS 添加到 Laravel 但继续使用 Laravel 的路由器等

Laravel + VueJS - 组件不显示

后端的 Laravel VueJS 路由器