Javascript 如何获取Dropzone.js返回值?

Javascript 如何获取Dropzone.js返回值?,javascript,html,file-upload,dropzone.js,Javascript,Html,File Upload,Dropzone.js,我只是实现了让文件上传到我的网站更容易。文件上传正常,上传完成后,我给文件一个id,并将该id返回浏览器 除了我不知道如何捕获从服务器返回的id之外,这一切都很好。在中,我找到了一些应该这样做的代码,但它不适合我。我现在的代码粘贴在下面 有人知道如何获取服务器返回的值吗?欢迎所有提示 <!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-2.1.1.mi

我只是实现了让文件上传到我的网站更容易。文件上传正常,上传完成后,我给文件一个id,并将该id返回浏览器

除了我不知道如何捕获从服务器返回的id之外,这一切都很好。在中,我找到了一些应该这样做的代码,但它不适合我。我现在的代码粘贴在下面

有人知道如何获取服务器返回的值吗?欢迎所有提示

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script type="text/javascript" src="/static/js/external/dropzone.min.js"></script>
    <link href="/static/css/external/dropzone.css" rel="stylesheet">

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

        Dropzone.options.uiDZResume = {
            success: function(file, response){
                console.log('WE NEVER REACH THIS POINT.');
                alert(response);
            }
        };
    });
</script>

</head>
<body>
<form action="/doc"
      class="dropzone"
      id="my-awesome-dropzone"></form>
</body>
</html>

$(函数(){
Dropzone.options.uiDZResume={
成功:函数(文件、响应){
log('我们从未达到这一点');
警报(响应);
}
};
});

看看dropzone.js的源代码,似乎有很多事件可以听

events: [
  "drop"
  "dragstart"
  "dragend"
  "dragenter"
  "dragover"
  "dragleave"
  "addedfile"
  "removedfile"
  "thumbnail"
  "error"
  "errormultiple"
  "processing"
  "processingmultiple"
  "uploadprogress"
  "totaluploadprogress"
  "sending"
  "sendingmultiple"
  "success"
  "successmultiple"
  "canceled"
  "canceledmultiple"
  "complete"
  "completemultiple"
  "reset"
  "maxfilesexceeded"
  "maxfilesreached"
]
在这里,“成功”事件似乎是合适的

一个好的起点是将事件侦听器绑定到dropzone,并查看您在此类事件中获得的数据

$('#my-awesome-dropzone').on('success', function() {
  var args = Array.prototype.slice.call(arguments);

  // Look at the output in you browser console, if there is something interesting
  console.log(args);
});
这有用吗

Dropzone.options.myDropzone = {
  init: function() {
        thisDropzone = this;
        this.on("success", function(file, responseText) {
            var responseText = file.id // or however you would point to your assigned file ID here;
            console.log(responseText); // console should show the ID you pointed to
            // do stuff with file.id ...
        });
    }
};
例如,我设置了将服务器路径附加到图像名称,并在提交时将其作为值传递到表单字段中。只要定义responseText指向文件ID,您就应该得到一个返回

此链接也可能有帮助:

尝试以下操作:

Dropzone.options.myAwesomeDropzone = {
    success: function(file, response){
        //alert(response);
        console.log(response);
    }
};
它对我有用

$(function() {
    var myDropzone = new Dropzone(".dropzone");
    myDropzone.on("success", function() {
        alert('Uploaded!');
    });
});

我正在使用jQuery,这就是我的工作原理:

var dz = $(".my-awesome-dropzone").dropzone()[0];
dz.dropzone.on("success", function (file, response) { ... }));

请注意,
dropzone()
方法向DOM对象添加了一个
dropzone
属性。你必须在上调用
on()
on对象,而不是jQuery
on()
我想把它作为注释添加,但我不能,因为我名声不好

对于那些仍然无法从服务器检索响应的用户,如果使用分块,Dropzone会在这种情况下硬编码空白响应:


因此,分块上传似乎不支持检索响应。

好的,谢谢!你可能会有一个我如何做的小例子代码(我的JS技能与我的PHP和Python技能不一样)?我试过了(包括<代码>我的可怕的DROPZORZON/CODE >),但它不起作用。该函数永远不会被调用。我尝试绑定到其他事件,例如
“drop”
(有效)、
“dragenter”
(也有效)、
“success”
(无效)、
“complete”
(也无效)和
“addedfile”
(也无效)。你知道为什么有些调用而有些不调用吗?由于不工作事件的性质,我认为服务器端可能有问题<代码>“drop”和
“dragenter”
是完全与用户界面相关的事件,而
“success”
“complete”
“addedfile”
则与服务器端有关。@lechariotdor不错的一个。想法很好。@gabik1
参数
对象是一个隐式局部变量,在所有(非箭头)函数中都可用。当您不知道函数中需要多少参数时,它非常有用,因为您可以(几乎)像数组一样使用它。更多信息。这很有帮助!为了更加清晰,我想提到的是“myDropzone”必须是您表单id的驼峰大小写版本。这对我不适用。Dropzone.options.myDropzone={init:function(){this.on(“success”,function(file,responseText){console.log(responseText);//控制台应显示您指向的ID//do stuff with file.ID…});};您正在回复近3年前提供的解决方案。可能是您的Dropzone版本与我的不同,或者您的实例不是“myDropzone”或其他任何一个。如果不发布代码,没有人可以帮助您,您的评论也没有建设性。
var dz = $(".my-awesome-dropzone").dropzone()[0];
dz.dropzone.on("success", function (file, response) { ... }));
if (allFinished) {
    _this14.options.chunksUploaded(file, function () {
        _this14._finished(files, '', null);
     });
}