Laravel ajax删除请求

时间:2016-07-27 10:17:35

标签: javascript ajax laravel

所以这是我的删除按钮

<button class="btn btn-danger btn-xs btn-delete delete" value="{{$post->id}}">Delete</button>

然后是ajax请求

<script type="text/javascript">

                    $(document).ready(function(){
                         $('.delete').click(function(){
                            var id = $(this).val();
                            alert(id);
                            $.ajax({
                                type: "DELETE",
                                url: "{{route('delete_post')}}",
                                 data: { id: 1 },
                                success: function (data) {
                                    console.log(data);

                                    $("#task" + id).remove();
                                },
                                error: function (data) {
                                    console.log('Error:', data);
                                }
                            });
                        });
                    });
                </script>

路线

Route::get('delete_post','PostController@getDeletePost');

然后是控制器:

public function getDeletePost($post_id)
{
    $post = Post::where('id', $post_id)->first();

    $post->delete();
    return redirect()->route('dashboard')->with(['message' => 'Successfully deleted!']);
}

所以请帮助我确认为什么当我按下删除按钮时没有真正发生的事情

2 个答案:

答案 0 :(得分:1)

您正在Ajax调用中发送DELETE请求类型,这需要一个_method参数,其值为DELETE添加到您的AJAX数据中。你的路线是一条GET路线,这就是你没有看到任何动作的原因

另一个问题是您的刀片语法中引用了命名路由'delete_post',但这是您的URL,而不是路由名称。您尚未根据已发布的内容命名路线

尝试在路由文件中更新此行,并允许请求将其用于控制​​器方法。

Route::post('delete_post','PostController@getDeletePost')->name('delete_post');

现在您必须将Ajax请求类型更改为

type: "POST"

答案 1 :(得分:1)

我已经修改了你的javascript,你的代码中的第一个问题是,你必须使用get请求或发布请求,第二个问题你没有使用命名路由,为了调用url for ajax,如{{ route() }},它应该是{{ url('path') }}或命名您的路线..

<script type="text/javascript">

                $(document).ready(function(){
                     $('.delete').click(function(){
                        var id = $(this).val();
                        alert(id);
                        $.ajax({
                            type: "get",
                            url: "{{ url('/') }}",
                             data: { id: 1 },
                            success: function (data) {
                                console.log(data);

                                $("#task" + id).remove();
                            },
                            error: function (data) {
                                console.log('Error:', data);
                            }
                        });
                    });
                });
            </script>