如何使用PHP在DropZone中触发错误事件?

时间:2014-09-28 13:21:21

标签: javascript php jquery dropzone.js

在dropzone.js中,有一个事件error,但我找不到任何关于如何从PHP触发此事件的文档。

我尝试从PHP发送各种header()响应,包括404,500,503等,但此事件尚未触发。

我要做的是,服务器检查mime以查看它是否有效,如果它无效,我丢弃该文件,理想情况下 - 返回错误,以便dropzone可以做出相应的响应。 / p>

从javascript方面,我尝试了以下内容:

.on("complete", function(file,response) {
   console.log(response);
}

.on("error", function(file,response) {
   console.log(response);
}

.on("success", function(file,response) {
   console.log(response);
}

...但是,response未定义,即使我从php脚本返回JSON或纯文本。 dropzone.js似乎不支持获取完整的服务器响应,或者至少它不会将其提升到自定义处理程序。我所看到的关于在事件中传递第二个参数的任何提及的唯一地方都是在其他问题中提到的,而这些问题并没有直接提出这个问题。

必须有一种方法来获取服务器响应(正如我过去使用其他上传器javascript,如jQuery POST和jqUpload等)。看起来相当愚蠢,我无法触发命令来指示上传失败 - 即使文件传输已完成 - 因为它仍然需要在脚本上等待响应。 ---这意味着我可能会忽略某些东西,这就是为什么我要求帮助,因为他们的文档完全没有提及服务器应该如何响应---语言无关紧要,但在我的情况下,我使用的是PHP。 / p>

提前致谢。

2 个答案:

答案 0 :(得分:12)

<?php 
    header('HTTP/1.1 500 Internal Server Error');
    header('Content-type: text/plain');
    $msg = "Your error message here.";
    exit($msg);
?>

注意:请勿重定向用户,否则将无法运行exit($msg)

<script type="text/javascript">
    $(document).ready(function () {

        Dropzone.options.dropzone = {

            maxFilesize: 10,
            init: function () {
                this.on("uploadprogress", function (file, progress) {
                    console.log("File progress", progress);
                });
            }

        };
    });
</script>

就是这样!它应该工作。

答案 1 :(得分:2)

如果您发送任何非200响应标头,Dropzone会将其检测为错误并触发error(file, response)事件。错误信息可以作为JSON输入,可以通过response.your_msg_variable

访问

请注意,只是打印response不会显示任何有用的内容,因为它是一个对象,您可以使用console.log(JSON.stringify(responseText, null, 4));

这样可以将对象打印到最多4级