Javascript Dropzone处理队列在服务器端验证上不工作
我在表单中使用了Laravel5.8和集成dropzone。在我的表单中,我在服务器端发布了标题唯一性验证 问题的情景是 1.用户将输入博客文章标题,并在dropzone中添加5幅图像 2.然后,如果输入的标题已存在,则将出现验证错误 3.再次出现验证错误后,如果我们尝试提交表单,则请求将不会发送到服务器。这意味着Javascript Dropzone处理队列在服务器端验证上不工作,javascript,jquery,dropzone.js,dropzone,Javascript,Jquery,Dropzone.js,Dropzone,我在表单中使用了Laravel5.8和集成dropzone。在我的表单中,我在服务器端发布了标题唯一性验证 问题的情景是 1.用户将输入博客文章标题,并在dropzone中添加5幅图像 2.然后,如果输入的标题已存在,则将出现验证错误 3.再次出现验证错误后,如果我们尝试提交表单,则请求将不会发送到服务器。这意味着dzClosure.processQueue()失败 document.getElementById("submitArticleFormButton").addEventListen
dzClosure.processQueue()代码>失败
document.getElementById("submitArticleFormButton").addEventListener("click", function(e) {
if (dzClosure.files.length>0) {
;
dzClosure.processQueue();
} else {
dzClosure.uploadFiles([]);
}
}
如何解决这个问题
当我审查一些问题时,我发现了以下文件
即使我在我的情况下,当验证错误抛出时,它将是419,但仍然不能像预期的那样工作
更新
我只有在服务器端验证正常的情况下才有问题。即使在验证结束后,如果我添加了额外的映像,那么如果我尝试提交,它也会正常工作。
甚至我也包括了csrf令牌和419它的自定义头集
public function respond($data, $headers = [])
{
$data['error']="error occured";
return response()->json($data,419, $headers);
}
您是否已将您的CSRF令牌连接到dropzone标头?不久前,我也遇到了同样的问题,并且能够通过使用带有Dropzone的CSRF令牌头来修复它
首先,您需要打印我们的CSRF令牌
var CSRF_token = {% csrf_token %};
然后将其包含在您的请求中
sending: function(file, xhr, formData) {
formData.append("csrf_token", CSRF_token);
}
最新答案
尝试手动将Dropzone文件状态更新为排队,以便Dropzone再次上载相同的图像
dzClosure.files.forEach(file => {
file.status = Dropzone.QUEUED
})
它已经在那里。即使我可以成功提交,如果我没有验证错误。而且,即使valdiation错误,如果我添加额外的图像,那么它将成功上传。我认为dropzone没有更新文件状态。尝试将dropzone文件状态更新为file.status=dropzone.QUEUED
,但是,您必须使用javascript迭代文件数组,因为IIRC,文件没有附加状态。@正在编码。我会尝试。谢谢。我还认为您的评论肯定有一些线索。@CodingSomthing。谢谢您的回答。这对我帮助很大。花了很多时间来理解以解决此问题。但无法成功。非常感谢