我正在尝试使用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();
}
任何人都可以看到它在哪里破裂??
答案 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