删除数据库中的行时出现 TokenMismatchException

TokenMismatchException when deleting a row in db

我正在使用 DropZone.js 和 laravel。当我尝试删除带有 AJAX 请求的记录时,我收到一条回复:

Whoops, looks like something went wrong. 1/1 TokenMismatchException in VerifyCsrfToken.php

var classElements = document.querySelectorAll("tr.ui-selected td.filename");

        for(var x = 0;x < classElements.length;x++){
            var result;
            result = classElements[x].innerHTML;
            var csrf = $('input[name=_token]').val();
            $.ajax({
                async: true,
                type: "DELETE",
                method: 'POST',
                url: '../public/deletefile',
                data: { filename: result, "_token": "{{ csrf_token() }}"  },
                success: function(response) {
                   $('#results').html(response);
                }
            });

这是型号:

public function deleteUserFiles(){ 
        $userid = Auth::id();
        $result = $_POST['result'];
        $deletedRows = App\Models\File::where('filename', $result)->where('userid', $userid)->delete();
    }
}

路线:

Route::post('deletefile', 'UserFiles@deleteUserFiles');

可能是什么问题?

我认为这里的问题是你在循环中使用了 csrf_token()。我认为你的 JS 代码应该是这样的:

var classElements = document.querySelectorAll("tr.ui-selected td.filename");
var csrf = $('input[name=_token]').val();

for(var x = 0;x < classElements.length;x++){
    var result;
    result = classElements[x].innerHTML;

    $.ajax({
        async: true,
        type: "DELETE",
        method: 'POST',
        url: '../public/deletefile',
        data: { filename: result, "_token": csrf  },
        success: function(response) {
           $('#results').html(response);
        }
    });