我想用ajax调用路由资源,当我把类型设置为delete时,我得到了错误(异常"Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException")和给定的消息(消息“这个路由不支持DELETE方法。支持的方法: GET,HEAD,POST。”).function几乎工作信标,因为在make刷新后状态也改变了,但我是上面的错误。
路由:
Route::resource('category', ArtistCategoryController::class);控制器:
public function destroy($id)
{
$category = ArtistCategory::findOrFail($id);
$deleteResponse = $category->update([
'status'=>'d'
]);
if ($deleteResponse) {
deleteMessage();
return redirect()->back();
} else
errorMessage();
}查看:
<a href="" class="categoryDelete" data-id={{ $category->id}} ><i class="far fa-trash-alt" style="color: #b21f2d"></i></a>ajax:
<script>
$(".categoryDelete").on('click', function (e) {
e.preventDefault();
let id = $(this).data('id')
// console.log(id)
$.ajax({
url: '/artist/category/'+id,
type: 'DELETE',
data:{"id": id, "_token": "{{ csrf_token() }}"},
success: function (data)
{
alert(data)
},
error: function (e){
alert(e)
}
});
})
</script>发布于 2021-04-24 10:04:44
解决了它与销毁方法中的一些变化,因为我已经使用了返回return redirect()->back();,它会给出错误,这是不可接受的
已更新
public function destroy($id): \Illuminate\Http\JsonResponse
{
$category = ArtistCategory::findOrFail($id);
$deleteResponse = $category->update([
'status'=>'d'
]);
if ($deleteResponse) {
return response()->json([
'data' => [
'id' => $id
],
'status' => 'success',
]);
} else
{
return response()->json([
'data' => [
'id' => $id
],
'status' => 'error',
'message' => __("Couldn't Delete. Please Try Again!")
], 500);
}
}发布于 2021-04-24 08:52:04
您需要在header中设置csrf token。看看页面底部的文档:https://laravel.com/docs/8.x/csrf#csrf-x-csrf-token
使用令牌创建一个元标记,如下所示:
<meta name="csrf-token" content="{{ csrf_token() }}">然后像这样抓取它:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});https://stackoverflow.com/questions/67238302
复制相似问题