首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在laravel中使用ajax调用删除路由?

如何在laravel中使用ajax调用删除路由?
EN

Stack Overflow用户
提问于 2021-04-24 08:38:25
回答 2查看 180关注 0票数 0

我想用ajax调用路由资源,当我把类型设置为delete时,我得到了错误(异常"Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException")和给定的消息(消息“这个路由不支持DELETE方法。支持的方法: GET,HEAD,POST。”).function几乎工作信标,因为在make刷新后状态也改变了,但我是上面的错误。

路由:

代码语言:javascript
运行
复制
        Route::resource('category', ArtistCategoryController::class);

控制器:

代码语言:javascript
运行
复制
 public function destroy($id)
{
    $category = ArtistCategory::findOrFail($id);
    $deleteResponse = $category->update([
       'status'=>'d'
    ]);
    if ($deleteResponse) {
        deleteMessage();
        return redirect()->back();
    } else
        errorMessage();

}

查看:

代码语言:javascript
运行
复制
 <a href="" class="categoryDelete" data-id={{ $category->id}} ><i class="far fa-trash-alt" style="color: #b21f2d"></i></a>

ajax:

代码语言:javascript
运行
复制
<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>
EN

回答 2

Stack Overflow用户

发布于 2021-04-24 10:04:44

解决了它与销毁方法中的一些变化,因为我已经使用了返回return redirect()->back();,它会给出错误,这是不可接受的

已更新

代码语言:javascript
运行
复制
   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);
    }

}
票数 1
EN

Stack Overflow用户

发布于 2021-04-24 08:52:04

您需要在header中设置csrf token。看看页面底部的文档:https://laravel.com/docs/8.x/csrf#csrf-x-csrf-token

使用令牌创建一个元标记,如下所示:

代码语言:javascript
运行
复制
<meta name="csrf-token" content="{{ csrf_token() }}">

然后像这样抓取它:

代码语言:javascript
运行
复制
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67238302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档