Laravel 5.8尝试进行AJAX调用以删除评论失败

时间:2019-04-28 18:47:10

标签: javascript ajax laravel

我正在尝试使用AJAX调用删除食谱应用程序中的评论。 它一直给我一个405 error: Method not allowed。不知道它在哪里破裂,对我来说看起来还不错。有人可以看看吗?

刀片视图

@foreach($recipe->comments as $comment)
    <div>
        @if($comment->name == Auth()->user()->name)
            <p><a href="/user/{{$comment->name}}">{{$comment->name}}</a></p>
            <p>{{$comment->comment}}</p>
            <button class="deleteComment" data-id="{{ $comment->id }}" data-token="{{ csrf_token() }}" >Delete Comment</button>
        @else
        @endif
    </div>
@endforeach

自定义js文件

// Delete Comments AJAX 

$(".deleteComment").click(function(){
    var id = $(this).data("id");
    var token = $(this).data("token");
    $.ajax(
    {
        url: "/comment/delete/"+id,
        type: 'DELETE',
        dataType: "JSON",
        data: {
            "id": id,
            "_method": 'DELETE',
            "_token": token,
        },
        success: function ()
        {
            console.log("it Work");
        }
    });
    console.log("It failed");
});

路线

Route::delete('comment/delete/{id}', 'CommentsController@destroy');

CommentController @ destroy

public function destroy($id)
    {
        Comment::destroy($id);
        return redirect()->back();
    }

任何人都可以看到它在哪里破裂??

3 个答案:

答案 0 :(得分:3)

 Route::delete('comment/delete/{id}', 'CommentsController@destroy');
 public function destroy(Request $request,$id) 
 { 
     Comment::destroy($id); 
     return ['status'=> true] ; 
 }

添加此代码

答案 1 :(得分:0)

我对laravel不太了解,因为我已经使用了几次,而且我还在学习,但是您可以尝试将请求类型从delete更改为{{1} }。 DELETE HTTP请求方法没有可携带某些数据的正文,您需要将注释ID传递给控制器​​。这应该可行:

post

答案 2 :(得分:0)

这里的问题是。您不是使用method: 'DELETE'而是使用type: 'DELETE',因此JQuery根本没有发出请求,因为它没有方法。 这是因为在新版本的jquery中,类型已更改为方法。如果您使用的是1.9.0之前的jQuery版本,请使用type