删除 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的主要内容,如果未能解决你的问题,请参考以下文章