【问题标题】:"dropzone is not a function" in ajax responseajax 响应中的“dropzone 不是函数”
【发布时间】:2017-10-01 11:52:31
【问题描述】:

我有一个获取 ajax 响应的页面。 那个回复

  1. 包含另一个 ajax 响应
  2. 最后一个响应有一个 dropzone,用以下内容初始化

$(document).ready(function() {
    $("#uploadme").dropzone({
        paramName: 'photos',
        url: 'upload.php',
        dictDefaultMessage: "drop here",
        clickable: true,
        enqueueForUpload: true,
        maxFilesize: 1,
        uploadMultiple: false,
        addRemoveLinks: true
    });
});

第一次效果很好。

第二个响应 (2.) 在表单中发布时会重新加载。发生这种情况时,我在控制台中收到此错误

未捕获的类型错误:$(...).dropzone 不是函数

我猜(我现在纯粹是在猜)dropzone 很快就会被调用,但我该如何解决这个问题?

【问题讨论】:

  • dropzone库是如何包含在页面中的?
  • 它包含在第一页的页眉中,在 Jquery 下方。
  • $(document).ready(function($) { 您很可能有多个版本的 jquery。将$ 添加到就绪回调中会给您一个$,它不会被附加版本的jquery 覆盖。您绝对应该避免使用多个版本的 jquery。

标签: jquery ajax dropzone.js


【解决方案1】:

我自己可能已经找到了解决方案。

首先,我将代码移到 $(document).ajaxComplete(function()) 之外

其次,利用DropzoneJS: How to get PHP response after upload success?上的线索,我将代码改写为

   new Dropzone("#uploadme", { 
               maxFilesize: 2, // MB
               dictDefaultMessage: "Dra bilder hit om du vill inkludera dom i din kommentar",
            url: 'upload.php',
            init: function() {
                this.on("success", function(file, responseText) {
                    console.log(responseText);
                });
            }
        });

我不太确定它为什么起作用,但它可能对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多