Php Laravel是否通过ajax删除记录?

Php Laravel是否通过ajax删除记录?,php,ajax,laravel,crud,Php,Ajax,Laravel,Crud,我正在尝试使用ajax删除记录,在Laravel5.4中,我知道这是一个常见问题,关于这个主题已经有很多在线解决方案和教程可用。我尝试了其中一些方法,但大多数方法都给我相同的错误NetworkError:405方法是不允许的。我试着从不同的角度来做这个任务,但是我被卡住了,找不到我错的地方,这就是为什么我添加了这个问题作为指导 我正在尝试以下脚本来删除记录 路线中: Route::delete('article/delete/{article}', 'ArticleController@

我正在尝试使用ajax删除记录,在Laravel5.4中,我知道这是一个常见问题,关于这个主题已经有很多在线解决方案和教程可用。我尝试了其中一些方法,但大多数方法都给我相同的错误NetworkError:405方法是不允许的。我试着从不同的角度来做这个任务,但是我被卡住了,找不到我错的地方,这就是为什么我添加了这个问题作为指导

我正在尝试以下脚本来删除记录

路线中:

    Route::delete('article/delete/{article}', 'ArticleController@delete_article')->name("delete_article");
    public function delete_article($id)
    {
        article::where('id', $id)->delete($id);

        return response()->json([
            'success' => 'Record deleted successfully!'
       ]);
    }
    <li name="csrf-token" content="{{ csrf_token() }}">
        <a class="deleteRecord" href="/admin/article/delete/{{$article->id}}">
            <i class="icon-bin"></i>delete
        </a>
    </li>
    $(".deleteRecord").click(function(){
        var id = $(this).data("id");
        var token = $("meta[name='csrf-token']").attr("content");

        $.ajax({
            url: /admin/article/delete/{{article}},
            type: 'DELETE',
            data: {
                "id": id,
                "_token": token,
            },
            success: function (){
                console.log("it Works");
            }
        });

    });
url: "article/"+id
article/delete/{article}
<td>
<a class="deleteRecord" data_id="{{$article->id}}">
<i class="icon-bin" style="color: black"></i></a>
</td>
$(".deleteRecord").each(function () {
            $(this).on("click", function () {
                var $tr = $(this).closest('tr');
                var id = $(this).attr("data_id");
                swal({
                    title: "Are you sure to Delete!",
                    text: "***",
                    icon: "warning",
                    buttons: [
                        'cansle!',
                        'yes'
                    ],
                    dangerMode: true,
                }).then(function(isConfirm) {
                    if (isConfirm) {
                        $.ajax({
                            url: '/admin/article/delete',
                            type: 'post',
                            dataType: 'json',
                            data: {_token: "{{csrf_token()}}" , id:id},
                            success: function () {
                                swal({
                                    title: "article deleted succesfuly",
                                    icon: "success",
                                    type: 'success',
                                })
                                $tr.find('td').fadeOut(1000,function(){
                                    $tr.remove();
                                });
                            }
                        })
                    }
                })
            });
        });
在控制器中:

    Route::delete('article/delete/{article}', 'ArticleController@delete_article')->name("delete_article");
    public function delete_article($id)
    {
        article::where('id', $id)->delete($id);

        return response()->json([
            'success' => 'Record deleted successfully!'
       ]);
    }
    <li name="csrf-token" content="{{ csrf_token() }}">
        <a class="deleteRecord" href="/admin/article/delete/{{$article->id}}">
            <i class="icon-bin"></i>delete
        </a>
    </li>
    $(".deleteRecord").click(function(){
        var id = $(this).data("id");
        var token = $("meta[name='csrf-token']").attr("content");

        $.ajax({
            url: /admin/article/delete/{{article}},
            type: 'DELETE',
            data: {
                "id": id,
                "_token": token,
            },
            success: function (){
                console.log("it Works");
            }
        });

    });
url: "article/"+id
article/delete/{article}
<td>
<a class="deleteRecord" data_id="{{$article->id}}">
<i class="icon-bin" style="color: black"></i></a>
</td>
$(".deleteRecord").each(function () {
            $(this).on("click", function () {
                var $tr = $(this).closest('tr');
                var id = $(this).attr("data_id");
                swal({
                    title: "Are you sure to Delete!",
                    text: "***",
                    icon: "warning",
                    buttons: [
                        'cansle!',
                        'yes'
                    ],
                    dangerMode: true,
                }).then(function(isConfirm) {
                    if (isConfirm) {
                        $.ajax({
                            url: '/admin/article/delete',
                            type: 'post',
                            dataType: 'json',
                            data: {_token: "{{csrf_token()}}" , id:id},
                            success: function () {
                                swal({
                                    title: "article deleted succesfuly",
                                    icon: "success",
                                    type: 'success',
                                })
                                $tr.find('td').fadeOut(1000,function(){
                                    $tr.remove();
                                });
                            }
                        })
                    }
                })
            });
        });
视图中:

    Route::delete('article/delete/{article}', 'ArticleController@delete_article')->name("delete_article");
    public function delete_article($id)
    {
        article::where('id', $id)->delete($id);

        return response()->json([
            'success' => 'Record deleted successfully!'
       ]);
    }
    <li name="csrf-token" content="{{ csrf_token() }}">
        <a class="deleteRecord" href="/admin/article/delete/{{$article->id}}">
            <i class="icon-bin"></i>delete
        </a>
    </li>
    $(".deleteRecord").click(function(){
        var id = $(this).data("id");
        var token = $("meta[name='csrf-token']").attr("content");

        $.ajax({
            url: /admin/article/delete/{{article}},
            type: 'DELETE',
            data: {
                "id": id,
                "_token": token,
            },
            success: function (){
                console.log("it Works");
            }
        });

    });
url: "article/"+id
article/delete/{article}
<td>
<a class="deleteRecord" data_id="{{$article->id}}">
<i class="icon-bin" style="color: black"></i></a>
</td>
$(".deleteRecord").each(function () {
            $(this).on("click", function () {
                var $tr = $(this).closest('tr');
                var id = $(this).attr("data_id");
                swal({
                    title: "Are you sure to Delete!",
                    text: "***",
                    icon: "warning",
                    buttons: [
                        'cansle!',
                        'yes'
                    ],
                    dangerMode: true,
                }).then(function(isConfirm) {
                    if (isConfirm) {
                        $.ajax({
                            url: '/admin/article/delete',
                            type: 'post',
                            dataType: 'json',
                            data: {_token: "{{csrf_token()}}" , id:id},
                            success: function () {
                                swal({
                                    title: "article deleted succesfuly",
                                    icon: "success",
                                    type: 'success',
                                })
                                $tr.find('td').fadeOut(1000,function(){
                                    $tr.remove();
                                });
                            }
                        })
                    }
                })
            });
        });
正如你所看到的,似乎一切都是对的,但我不知道为什么它不能正常工作? 请帮帮我,伙计们。

问题(据我所知)就在这里:

<a class="deleteRecord" href="/admin/article/delete/{{$article->id}}">
但是在
a
标记中,您没有
数据id
属性。因此,您必须添加它(类似于以下内容):

路线:

    Route::delete('article/delete/{article}', 'ArticleController@delete_article')->name("delete_article");
    public function delete_article($id)
    {
        article::where('id', $id)->delete($id);

        return response()->json([
            'success' => 'Record deleted successfully!'
       ]);
    }
    <li name="csrf-token" content="{{ csrf_token() }}">
        <a class="deleteRecord" href="/admin/article/delete/{{$article->id}}">
            <i class="icon-bin"></i>delete
        </a>
    </li>
    $(".deleteRecord").click(function(){
        var id = $(this).data("id");
        var token = $("meta[name='csrf-token']").attr("content");

        $.ajax({
            url: /admin/article/delete/{{article}},
            type: 'DELETE',
            data: {
                "id": id,
                "_token": token,
            },
            success: function (){
                console.log("it Works");
            }
        });

    });
url: "article/"+id
article/delete/{article}
<td>
<a class="deleteRecord" data_id="{{$article->id}}">
<i class="icon-bin" style="color: black"></i></a>
</td>
$(".deleteRecord").each(function () {
            $(this).on("click", function () {
                var $tr = $(this).closest('tr');
                var id = $(this).attr("data_id");
                swal({
                    title: "Are you sure to Delete!",
                    text: "***",
                    icon: "warning",
                    buttons: [
                        'cansle!',
                        'yes'
                    ],
                    dangerMode: true,
                }).then(function(isConfirm) {
                    if (isConfirm) {
                        $.ajax({
                            url: '/admin/article/delete',
                            type: 'post',
                            dataType: 'json',
                            data: {_token: "{{csrf_token()}}" , id:id},
                            success: function () {
                                swal({
                                    title: "article deleted succesfuly",
                                    icon: "success",
                                    type: 'success',
                                })
                                $tr.find('td').fadeOut(1000,function(){
                                    $tr.remove();
                                });
                            }
                        })
                    }
                })
            });
        });
因此,要么改变路线:

article/{article}
或者更改
ajax
调用:

url: "article/delete/"+id
还有一件事。您必须防止默认的
标记操作。按如下方式更改事件:

<a class="deleteRecord" href="/admin/article/delete/{{$article->id}}" data-id="{{$article->id}}">
$(".deleteRecord").click(function(event){
    event.preventDeault();

你在很多地方做错了。试试这个

路线

控制器

public function delete_article($article)
    {
        article::where('id', $article)->delete();
        return response()->json([
            'success' => 'Record deleted successfully!'
        ]);
    }
看法

这是我的工作: 途中

Route::post('/article/delete', 'ArticleController@delete_article');//Ajax Routes
在控制器中

public function delete_article(Request $request)
    {
        $id=$request['id'];
        article::where('id', $id)->delete();
        return response()->json(['articleDelete' => 'success']);
    }
视图中:

    Route::delete('article/delete/{article}', 'ArticleController@delete_article')->name("delete_article");
    public function delete_article($id)
    {
        article::where('id', $id)->delete($id);

        return response()->json([
            'success' => 'Record deleted successfully!'
       ]);
    }
    <li name="csrf-token" content="{{ csrf_token() }}">
        <a class="deleteRecord" href="/admin/article/delete/{{$article->id}}">
            <i class="icon-bin"></i>delete
        </a>
    </li>
    $(".deleteRecord").click(function(){
        var id = $(this).data("id");
        var token = $("meta[name='csrf-token']").attr("content");

        $.ajax({
            url: /admin/article/delete/{{article}},
            type: 'DELETE',
            data: {
                "id": id,
                "_token": token,
            },
            success: function (){
                console.log("it Works");
            }
        });

    });
url: "article/"+id
article/delete/{article}
<td>
<a class="deleteRecord" data_id="{{$article->id}}">
<i class="icon-bin" style="color: black"></i></a>
</td>
$(".deleteRecord").each(function () {
            $(this).on("click", function () {
                var $tr = $(this).closest('tr');
                var id = $(this).attr("data_id");
                swal({
                    title: "Are you sure to Delete!",
                    text: "***",
                    icon: "warning",
                    buttons: [
                        'cansle!',
                        'yes'
                    ],
                    dangerMode: true,
                }).then(function(isConfirm) {
                    if (isConfirm) {
                        $.ajax({
                            url: '/admin/article/delete',
                            type: 'post',
                            dataType: 'json',
                            data: {_token: "{{csrf_token()}}" , id:id},
                            success: function () {
                                swal({
                                    title: "article deleted succesfuly",
                                    icon: "success",
                                    type: 'success',
                                })
                                $tr.find('td').fadeOut(1000,function(){
                                    $tr.remove();
                                });
                            }
                        })
                    }
                })
            });
        });

嘿,伙计。您是否尝试过最后一部分:
route
ajax
.methodnotallowedhttpexception您的ajax工作正常吗?我的意思是url不应该改变。如果url更改,则单击事件不起作用。@Rouhollah Mazarei是,一切正常,但显示http异常。您是否在浏览器内部或开发者工具的
网络
选项卡中发现错误?您是否根据我的回答更改了所有内容?@zahid hasan emon是,直到您获得方法不允许的异常为止?