Исключение TokenMismatchException при удалении строки в бд


Я использую DropZone.js и ларавель. Когда я пытаюсь удалить запись с помощью AJAX-запроса, я получаю ответ, в котором говорится:

Упс, похоже, что-то пошло не так. 1/1 Исключение TokenMismatchException в 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');

В чем может быть проблема?

Author: Alex, 2015-12-19

1 answers

Я думаю, что проблема здесь в том, что вы используете 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);
        }
    });
 0
Author: Marcin Nabiałek, 2015-12-19 18:41:51