删除数据库中的行时出现 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);
}
});
我正在使用 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);
}
});