此路由 Laravel + ConfirmBox 不支持 GET 方法

Posted

技术标签:

【中文标题】此路由 Laravel + ConfirmBox 不支持 GET 方法【英文标题】:The GET method is not supported for this route Laravel + ConfirmBox 【发布时间】:2021-12-18 09:47:17 【问题描述】:

我试图解决这个问题:

此路由不支持 GET 方法。支持的方法: 发布。

但是我在 Laravel 8 上找不到正确的方法和错误。

这是刀片:

 <a href=" route('operDel',$data->id) " class="btn btn-danger btn-sm"
     data-tr="tr_$data->id"
     data-id="$data->id"
     data-toggle="confirmation"
     data-btn-ok-label="Delete" data-btn-ok-icon="fa fa-remove"
     data-btn-ok-class="btn btn-sm btn-danger"
     data-btn-cancel-label="Cancel"
     data-btn-cancel-icon="fa fa-chevron-circle-left"
     data-btn-cancel-class="btn btn-sm btn-default"
     data-title="Are you sure you want to delete ?"
     data-placement="left" data-singleton="true">Delete</a>

这个刀片中的 javascript

        $(document).on('confirm', function (e) 
            var ele = e.target;
            e.preventDefault();

            $.ajax(
                url: ele.href,
                type: 'DELETE',
                headers: 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
                success: function (data) 
                    if (data['success']) 
                        $("#" + data['tr']).slideUp("slow");
                        alert(data['success']);
                     else if (data['error']) 
                        alert(data['error']);
                     else 
                        alert('Whoops Something went wrong!!');
                    
                ,
                error: function (data) 
                    alert(data.responseText);
                
            );
            return false;
        );

这是路线

Route::delete('operDel/id', '\App\Http\Controllers\OperationController@destroy')->name('operDel')->middleware('auth');

这是控制器

public function destroy($id)


Kvit::where('id', $$id)->delete();
 return response()->json([
                'success'=>"Product Deleted successfully.", 'tr'=>'tr_'.$id
            ]);
            

我错过了什么?

【问题讨论】:

【参考方案1】:

通过这段代码解决

刀片

 <button class="btn btn-icon btn-flat-danger deleteRecord"
      data-id="$data->id">
      <i class="fas fa-trash"></i>
  </button>

JavaScript

$(".deleteRecord").click(function()
    var id = $(this).data("id");
    var token = $("meta[name='csrf-token']").attr("content");
    if(confirm('Do you want to delete?'))
        $.ajax(
            
                url: "operDel/"+id,
                type: 'post',
                cache: false,
                data: 
                    "id": id,
                    "method": 'post',
                    "_token": token,
                ,
                dataType: "json",
                success: function(response) 
                    if(response.status == "success")
                        window.location.href='/operations';
                    else if(response.status == "error")
                        toastr['error'](
                            'Please check datas..',
                            'You can not delete this!',
                            
                                closeButton: true, tapToDismiss: true, progressBar: true,
                            
                        );
                        
                    
                ,
            );
    

);

【讨论】:

【参考方案2】:

您需要将方法传递给服务器。

$.ajax(
    url: "operDel/"+id,
    type: 'get',
    headers: 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
    data: 
        "id": id,
        "_method": 'DELETE',
        "_token": token,
,
success: function(data)
 //do stuff
,
error: function(data)
 //do stuff

);

【讨论】:

亲爱的@manojkiran-appathurai 你能再检查一下这个JS吗,因为我纠正了一些错误

以上是关于此路由 Laravel + ConfirmBox 不支持 GET 方法的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 - 此路由不支持 POST 方法。支持的方法:删除

此路由不支持 GET 方法。支持的方法:POST。 laravel 5.8 阿贾克斯

laravel向我显示此错误此路由不支持POST方法。支持的方法:GET,HEAD,PUT,DELETE

错误:此路由不支持 POST 方法。支持的方法:GET、HEAD。 - 使用 laravel livewire

未定义路由 [threads.storev]。 Laravel 8 如何制作这条路线?

此路由不支持 PUT 方法。支持的方法:GET、HEAD、POST。在 laravel 中