删除 db 中的行时出现 TokenMismatchException

Posted

技术标签:

【中文标题】删除 db 中的行时出现 TokenMismatchException【英文标题】:TokenMismatchException when deleting a row in db 【发布时间】:2016-03-26 05:55:01 【问题描述】:

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

哎呀,好像出了点问题。 1/1 TokenMismatchException 在 验证CsrfToken.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');

可能是什么问题?

【问题讨论】:

【参考方案1】:

我认为这里的问题是您在循环中使用了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);
        
    );

【讨论】:

是的,这就是问题所在。谢谢。我认为它也应该循环

以上是关于删除 db 中的行时出现 TokenMismatchException的主要内容,如果未能解决你的问题,请参考以下文章

从表视图中删除行时出现异常。 iOS 目标-C

删除 UITableView 中的行时出错

为啥删除 UITableView 行时会出现错误?

使用 CASCADE 删除行时显示警告

删除行时出现404 laravel 8错误[关闭]

文本处理 - 连续出现一行空行则删除这行空行,连续出现两行空行时则只删除一行空行留一行空行