javascript - Laravel5 ajax 删除不起作用

标签 javascript php jquery ajax laravel-5

我正在开发一个项目,我应该使用 ajaxusers 表中删除用户。我一直在寻找多种解决方案,但无论如何它根本行不通。这是我收到的错误:

Failed to load resource: the server responded with a status of 500 (Internal Server Error).

TokenMismatchException in VerifyCsrfToken.php line 46

JS:

$('.btn-delete').click(function(){
    var id = $(this).val();
    $.ajax({
        type: 'DELETE',
        url: '/laravel-exercise/public/index/'+id,
        success: function (data) {
            console.log('Success:', data);
        },
        error: function (data) {
            console.log('Error:', data);
        }
    });
});

查看:

<button class="btn btn-danger btn-delete"
 value="{{$user->id}}" data-token="{{ csrf_token() }}">Delete</button>

路线:

Route::delete('index/{$id}', 'UsersController@destroy');

用户 Controller :

public function destroy($id)
    {
            $user = User::findOrFail($id);
            $user->delete();

            return view('pages.index')->with([
                'flash_message' => 'The user has been deleted.',
                'flash_message_important' => 'true',
            ]);
    }

这里出了什么问题?

最佳答案

可能是由于 CSRF 保护。

在绑定(bind)按钮点击之前尝试添加'X-CSRF-TOKEN'

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

$('.btn-delete').click(function(){
    var id = $(this).val();
    $.ajax({
        type: 'DELETE',
        url: '/laravel-exercise/public/index/'+id,
        success: function (data) {
            console.log('Success:', data);
        },
        error: function (data) {
            console.log('Error:', data);
        }
    });
});

将 CSRF token 添加到您的请求中。

看看here有关信息。

路线已找到,否则我将捕获 404 异常。

编辑

看看您如何制作按钮,您还可以使用 post 请求,但传递 _method 数据。

HTML:

<button class="btn btn-danger btn-delete" value="{{$user->id}}"
     data-token="{{ csrf_token() }}">Delete</button>

Javascript:

$('.btn-delete').click(function(){
    var token = $(this).data('token');
    var id = $(this).val();

    $.ajax({
        url: '/laravel-exercise/public/index/'+id,
        type: 'post',
        data: {_method: 'delete', _token :token},
        success: function (data) {
            console.log('Success:', data);
        },
        error: function (data) {
            console.log('Error:', data);
        }
    });
});

关于javascript - Laravel5 ajax 删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40716637/

相关文章:

javascript - jQuery ajax 请求代理

jquery - 始终处于事件状态的 Bootstrap 下拉菜单

javascript - Node 脚本引用错误: fs is not defined error in test script

javascript - Google Maps API - 沿纬度/经度之间的路线获取点

javascript - MyWebsite 如何发布 websiteA 和 websiteB 可以使用的 javascript 包 jQuery 或 AngularJS,而不会发生冲突?

Php: DateTime: 如何只设置秒数(不是小时也不是分钟)

php - 数据输入 SAP 系统后触发 PHP

php - 为什么调用 mb_convert_encoding 来清理文本?

javascript - 重构 JavaScript 中的嵌套 if 语句

jquery - 当用户单击 span 标记内的部分时,不会触发 Click 事件