将数据附加到dropzone

时间:2017-05-26 11:09:39

标签: dropzone.js

在我的网络应用程序中,我有一个"导入用户"按钮。如果单击此按钮,将打开一个包含

的AJAX弹出窗口

a)带有公司名称列表的下拉列表(此下拉列表具有ID CompanyID) b)一个名为fileUpload div的div,它最初是空的

当使用CompanyID菜单时,我希望它的行为如下:

a)如果CompanyID = 0,则禁用dropzone区域 b)如果CompanyID!= 0,则将companyID附加到formData

我遇到的问题是,如果有人选择CompanyID = 1,则会出现我的dropzone并附加数据。大!但是,如果他们然后选择另一家公司,那么它会尝试创建一个新的Dropzone并抱怨它已经附加了。

到目前为止有人更改CompanyID下拉选项时调用的代码如下:

function checkCompanySelected(CompanyID)
{
if (CompanyID==0)
    {
        // make sure dropzone div is disabled if it exists
    }
else
    {
        var myDropzone = new Dropzone("#fileUploadDiv", { url: "importupload.asp"});

        myDropzone.on("sending", function(file, xhr, formData) {
        formData.append("CompanyID", CompanyID);
        myDropzone.on("queuecomplete", function(file) { alert('All done'); closeImportUsersForm(); });
        });

    }
}

我真的一直在用一块砖墙敲打我的头 - 有很多关于将自动发现设置为假的东西,但到目前为止还没有运气。

1 个答案:

答案 0 :(得分:0)

就像在StackOverflow上发布约30分钟后的情况一样,答案突然袭击了我。为了拯救其他任何人,这场战斗就是我的代码:

function checkCompanySelected(CompanyID)
{
    document.getElementById('fileUploadDiv').innerHTML="";

if (CompanyID==0)
    {
        // make sure dropzone div is disabled if it exists
    }
else
    {

        if (fileUploadDiv.dropzone)
        {
            fileUploadDiv.dropzone.destroy();
            var myDropzone = new Dropzone("#fileUploadDiv", { url: "importupload.asp"});
        }
        else
        {
            var myDropzone = new Dropzone("#fileUploadDiv", { url: "importupload.asp"});
        }

        myDropzone.on("sending", function(file, xhr, formData) {
        formData.append("CompanyID", CompanyID);
        myDropzone.on("queuecomplete", function(file) { alert('All done'); closeImportUsersForm(); });
        });

    }
}

在查看错误处理之后我的突破来了,如果已经附加了dropzone并且我意识到确定你是否有dropzone的最简单的方法就是说......

if (fileUploadDiv.dropzone)

...将fileUploadDiv换成包含dropzone的div的名称。

重要提示 - 你不能只说fileUploadDiv.dropzone然后什么也不做,因为你会得到一条错误,说明它未定义。

myDropzone.on("sending", function(file, xhr, formData) {

这很奇怪,因为它一方面会出错,因为它已经附加了,但你也可能因为未定义而出错。

总而言之,我们有一种简单的方法来检测dropzone是否处于活动状态,然后我们可以销毁它并重新创建它。

autodiscover = false路线是一个红色的鲱鱼。