在fancybox / ajax中的Init Dropzone.js

时间:2015-03-23 10:02:05

标签: jquery html ajax fancybox dropzone.js

我正在尝试创建一种Mediacenter,您可以点击按钮,然后通过Fancybox内的ajax打开“Mediacenter”。 它显示了所有上传的图像(直到这里工作得很好)以及上传新图像的可能性。因此,我想使用Dropzone.js

在ajax / fancybox中我试图添加一个dropzone-form:

<div id="dropimg"></div>
<script type="text/javascript">
$(function(){
  $("div#dropimg").dropzone({ url: "/file/post" });
});
</script>   

但是所有id都在为我的div添加一个新类dz-clickable。不是Dropzone表格。

<div id="dropimg" class="dz-clickable"></div>

所以这意味着dropzone.js和jquery已经实现并且可以工作,但不知何故并不是一切。当我将代码直接添加到页面的<body>时,它完美地运行。但不是在ajax / fancybox中。

有人知道为什么吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

关于ajax dropzone.js由于某种原因丢失了,我遇到了很多jquery插件的问题

我解决了这个问题, 在成功回调中,我重新连接了脚本,然后安全地调用.dropzone

  $(document).ready(function() {
                $('#loadedFormId').load('url',
                    function(response, status, xhr) {                           
                            requireJs('dropzoneScript', '../../../../Scripts/Dropzone/dropzone.min.js', function() {
                                console.log('dropzone is alive');
                                $('#dropzoneForm').dropzone();
                            });
                        }
                    });
            });

并且requiredJs函数是一个js函数,它将为您重新下载脚本文件

function requireJs(scriptId, file, callback) {

    var element = document.getElementById(scriptId);
    element.parentNode.removeChild(element);

    var script = document.getElementsByTagName('script')[0],
    newjs = document.createElement('script');
    newjs.setAttribute('id', scriptId);
    // IE
    newjs.onreadystatechange = function () {
        if (newjs.readyState === 'loaded' || newjs.readyState === 'complete') {
            newjs.onreadystatechange = null;
            callback();
        }
    };
    // others
    newjs.onload = function () {
        callback();
    };
    newjs.src = file;
    script.parentNode.insertBefore(newjs, script);
}

它看起来像一个奇怪的解决方案,但它对我有用...享受:)

答案 1 :(得分:0)

感谢您的帮助,N0rA。但是我已经解决了#34;它通过避免AJAX。我创建了媒体中心作为隐藏的div,我将其打开为Inline-Fancybox。这样Dropzone.js工作得很好。