Как обновить Dropzone URL динамически - PullRequest
0 голосов
/ 28 января 2020

Я пробовал несколько разных способов, но я не могу заставить это работать.

Я пытаюсь следовать этому ответу здесь Динамически изменять URL-адрес Dropzone

У меня есть for с различными полями и два экземпляра Dropzone. Один работает отлично, однако, этот нужно загружать файлы в Dropbox на основе динамически сгенерированных ссылок для каждого файла.

Я пытаюсь обновить параметр URL-адреса dropzone для каждого файла, который обрабатывается на основе ответа ajax от сервера.

Я знаю, что ajax работает и выбирает нужный мне URL.

jQuery(document).ready(function(){

    Dropzone.autoDiscover = false
    jQuery("#files-uploader").dropzone({        
        url: 'url.com',
        init: function(){   

            var dropzoneobject=this;
            this.on("processing", function (file) {
                jQuery.ajax({
                    url:vendor_ajax_object.ajax_url,
                    type:'POST',
                    data:'action=knpGetUploadLink&filename='+file['name'],                  
                    success: function(data){
                        //data = a URL returned from the server
                        dropzoneobject.options.url = data;
                    },
                    error: function(){

                    }
                });            
            });

        },
        headers: {
            'content-type': 'application/octet-stream'
        },
        success: function (file, response) {
            console.log(response);
            file.previewElement.classList.add("dz-success");
        },
        error: function (file, response) {
            console.log(response);
            file.previewElement.classList.add("dz-error");
        },
        // update the following section is for removing image from library
        addRemoveLinks: true,
        removedfile: function(file) {}

    });

});

Запись переменной данных в консоль говорит, что с сервера был возвращен правильный URL-адрес. В журнале dropzoneobject.options.url в параметре ajax success указывается правильный заданный URL-адрес. Dropzone сообщает, что она успешно загружена, но на вкладке сети в инструментах разработчика указано, что URL-адрес, на который был отправлен URL-адрес, был url.com.

Я думаю, что мое время где-то испорчено.

Любой совет был бы великолепен.

TIA.

1 Ответ

0 голосов
/ 28 января 2020

Похоже, все было связано с временем.

Поменял место события обработки и установил для autoProcessQueue значение false.

Затем запустил processQueue, когда завершился вызов ajax.

jQuery(document).ready(function(){

Dropzone.autoDiscover = false
jQuery("#files-uploader").dropzone({        
    url: 'url.com',
    autoProcessQueue: false,
    init: function(){   

        var dropzoneobject=this;
        console.log(dropzoneobject);
        this.on("addedfile", function (file) {
        jQuery.ajax({
                url:vendor_ajax_object.ajax_url,
                type:'POST',
                data:'action=knpGetUploadLink&filename='+file['name'],                  
                success: function(data){
                    dropzoneobject.options.url = data;
                    dropzoneobject.processQueue();
                },
                error: function(){

                }
            });

        });
    },
    headers: {
        'content-type': 'application/octet-stream'
    },
    success: function (file, response) {
        //console.log(response);
        file.previewElement.classList.add("dz-success");
    },
    error: function (file, response) {
        //console.log(response);
        file.previewElement.classList.add("dz-error");
    },
    // update the following section is for removing image from library
    addRemoveLinks: true,
    removedfile: function(file) {}

});

})
...