小编典典

如何使用ajax请求删除laravel 5.3中的记录?

ajax

我试图在laravel
5.3中使用Ajax删除记录,我知道这是一个常见问题,并且已经有很多关于此主题的在线解决方案和教程。我尝试了其中一些,但大多数都给了我同样的错误NetworkError: 405 Method Not Allowed。我试图以不同的角度来完成这项任务,但是我被卡住了,找不到我错了,这就是为什么我将此问题添加为指导原则。

我正在尝试使用以下脚本删除记录。

Controller.php

public function destroy($id)
{   //For Deleting Users
    $Users = new UserModel;
    $Users = UserModel::find($id);
    $Users->delete($id);
    return response()->json([
        'success' => 'Record has been deleted successfully!'
    ]);
}

Routes.php

Route::get('/user/delete/{id}', 'UserController@destroy');

视野中

<button class="deleteProduct" data-id="{{ $user->id }}" data-token="{{ csrf_token() }}" >Delete Task</button>

App.js

$(".deleteProduct").click(function(){
        var id = $(this).data("id");
        var token = $(this).data("token");
        $.ajax(
        {
            url: "user/delete/"+id,
            type: 'PUT',
            dataType: "JSON",
            data: {
                "id": id,
                "_method": 'DELETE',
                "_token": token,
            },
            success: function ()
            {
                console.log("it Work");
            }
        });

        console.log("It failed");
    });

当我单击删除按钮时,它NetworkError: 405 Method Not Allowed在控制台中返回错误。如果没有ajax,则相同的删除功能将正常运行。

任何人都可以引导我解决问题的地方不对,如果有人对此进行指导,我将不胜感激。谢谢..


阅读 263

收藏
2020-07-26

共1个答案

小编典典

而不是使用Route::getuse Route::delete

除此之外变化type: 'Put',以type: 'DELETE'在Ajax调用。


PS此代码

$Users = new UserModel;        // Totally useless line
$Users = UserModel::find($id); // Can chain this line with the next one
$Users->delete($id);

可以写成:

UserModel::find($id)->delete();

甚至更短:

UserModel::destroy($id);

请记住,这->delete()会触发事件,而::destroy()不会。

2020-07-26