Javascript Dropzone处理队列在服务器端验证上不工作

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

我在表单中使用了Laravel5.8和集成dropzone。在我的表单中,我在服务器端发布了标题唯一性验证

问题的情景是

1.用户将输入博客文章标题,并在dropzone中添加5幅图像

2.然后,如果输入的标题已存在,则将出现验证错误

3.再次出现验证错误后,如果我们尝试提交表单,则请求将不会发送到服务器。这意味着
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。谢谢您的回答。这对我帮助很大。花了很多时间来理解以解决此问题。但无法成功。非常感谢