javascript - 如何在 laravel 中使用 ajax 调用删除路由?
问题描述
我想用 ajax 调用路由资源,当我将类型设置为删除时出现错误(异常“Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException”)并给出消息(消息“此路由不支持 DELETE 方法。支持的方法: GET, HEAD, POST.").function 几乎可以正常工作,因为刷新后状态也发生了变化,但我是上述错误。
路线 :
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>
阿贾克斯:
<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>
解决方案
通过对 destroy 方法进行一些更改来解决它,因为我使用了 returnreturn 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);
}
}