Javascript Laravel 5.8试图调用AJAX来删除注释,但加载失败

Javascript Laravel 5.8试图调用AJAX来删除注释,但加载失败,javascript,ajax,laravel,Javascript,Ajax,Laravel,我正在尝试使用AJAX调用删除配方应用程序中的注释。 它不断给我一个405错误:方法不允许。不知道它在哪里坏了,我觉得没问题。谁能看一下吗 刀片视图 @foreach($recipe->comments as $comment) <div> @if($comment->name == Auth()->user()->name) <p><a href="/user/{{$comment->n

我正在尝试使用AJAX调用删除配方应用程序中的注释。 它不断给我一个
405错误:方法不允许
。不知道它在哪里坏了,我觉得没问题。谁能看一下吗

刀片视图

@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
路线

// 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();
    }

有人能看到它在哪里断裂吗

我对laravel了解不多,因为我只使用过几次,而且我还在学习,但是您可以尝试将请求类型从
delete
更改为
post
。DeleteHTTP请求方法没有主体来承载一些数据,您需要将注释id传递给控制器。这应该起作用:


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

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

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

添加此代码

您能添加您收到的错误吗?是服务器端的还是浏览器中的?我正在获取AJAX调用末尾的console.log(失败),以防它不起作用。return redirect()->back();这就是返回任何json对象时会遇到的问题work@ShofiullahBabor什么意思?我不应该重定向回去吗?是的,因为您在ajax json中接收,但它不返回json,而是返回重定向,这是错误的。您尝试此返回['status'=>true],然后查看将输出什么仍然不起作用。仍然点击console.log(“它失败”);在脚本的底部…我认为问题在于路由,如果在请求中传递id而不将其附加到url,会发生什么?嗯,可能是这样。我尝试从路由的url中删除它,结果得到:POST 404(未找到)。因此,它将注释id正确地添加到POST请求中,但之后失败。您是否也尝试过将
“\u方法”:“删除”
修改为
“\u方法”:“POST”
?是的,先生,我刚刚尝试过。还是给了我404的错误谢谢!!如何使AJAX请求在不重新加载页面的情况下更新DOM?