2016-04-04 31 views
2

içinde .processQueue() çağrılırken hata oluştu projemde dropzoneJS kullanıyorum. addedfile durumunda ben ekledim:Dropzonejs

var csrf = $('input[name=_token]').val(); 
    $.ajax({ 
     async: true,      
     method: 'POST', 
     dataType: 'json', 
     url: '../public/userfiles', 
     data: {"_token": csrf }, 
     complete: function(data) { 
      var maxsize = 314572800; 
      var freesize = maxsize - data.responseJSON; 
      if(file.size > freesize){ 
       alert('Нямата достатъчно свободно пространсво.'); 
      } 
      else { 
       alert('Успешно качен файл'); 
       return Dropzone.prototype.processQueue();   
      } 
     } 
    }); 

Bu aslında şu anda yüklenen dosya 'boş alan' büyükse wheter tüm Yüklenen dosyalar ve çeklerin özetlenebilir boyutlarını olsun. Denetimi yapmak için autoProcessQueue seçeneğini yanlış ayarlamıştım. Boyutu kontrol ettikten sonra sıraya devam etmesi gereken fonksiyonu çağırırım. Ancak son satır return Dropzone.prototype.processQueue(); bana konsolda hata veriyor

TypeError: this.options is undefined parallelUploads = this.options.parallelUploads; Ne olabilir? DÜZENLEME: Bu Dropzone örneğinde deniyor zaman enter image description here

+1

. Eğer bu 'Dropzone'un bir örneği değilse, hangi sıranın işleneceğini nasıl anlayacak? –

+0

'Dropzone.prototype.processQueue() işlevi çalışmıyor mu? – Alex

+1

Bir işlev prototipte olduğunda, bu, o sınıfın örneklerinin kullanılması gerektiği anlamına gelir. Bu şekilde düşünün, sayfanızda birden fazla dropzon olabilir. 'Dropzone.prototype.processQueue', hangisini kastettiğinizi nasıl bilebilir? –

cevap

0

processQueue çalışır. Aksi takdirde, işlevin hangi sıranın işleneceğini bilmesi mümkün değildir. Bir example from the docs uzatılması

var myDropzone = new Dropzone("div#myId", { url: "/file/post"}); 
myDropzone.on("addedfile", function(file) { 
    // Your code here 
    this.processQueue(); 
}); 

Ancak başka bir fonksiyonun içinden bu performans gösterdiklerini beri (sizin complete fonksiyonu) Eğer doğru bağlamı olduğundan emin olmak zorundayız.

myDropzone.on('addedfile', function(file) { 
    $.ajax({ 
    // options go here 
    complete: function(data) { 
     var maxsize = 314572800; 
     var freesize = maxsize - data.responseJSON; 
     if(file.size > freesize){ 
     alert('Нямата достатъчно свободно пространсво.'); 
     } 
     else { 
     alert('Успешно качен файл'); 
     return myDropzone.processQueue();   
     } 
    } 
    }); 
}); 

DÜZENLEME otomatik dropzone başlatılıyor ediyorsanız

, o zaman init option.

Dropzone.options.dropzoneFileUpload = { 
    init: function() { 
    // `this` refers to the current dropzone 
    var self = this; // keep a reference 
    this.on('addedfile', function(file) { 
     ... 
     $.ajax({ 
     ... 
     complete: function(data) { 
      var maxsize = 314572800; 
      var freesize = maxsize - data.responseJSON; 
      if(file.size > freesize){ 
      alert('Нямата достатъчно свободно пространсво.'); 
      } 
      else { 
      alert('Успешно качен файл'); 
      return self.processQueue();   
      } 
     } 
     }); 
    }); 
    } 
}; 
+0

aslında tam olarak dropzone.js dosyasında bunu koymak gerekir. Çünkü bana hata veriyor: Geçersiz dropzone öğesi. yeni hata atma ("Geçersiz dropzone öğesi."); ' – Alex

+0

@Alex Bu, dropzone.js'de gitmemeli, kodunuza girmelidir. Dropzone'u tam olarak nasıl başlatıyorsunuz? –

+0

Evet, ana .js dosyasına koyup 'Error: Dropzone zaten eklenmiş. yeni hata attı ("Dropzone zaten eklenmiş"); ' – Alex

0

Sen dropzone örneğinden processQueue çağırmanız gerekir kullanarak yapılandırabilirsiniz var myDropzone = new Dropzone("#my-dropzone");

var myDropzone = new Dropzone("#my-dropzone"); 
var csrf = $('input[name=_token]').val(); 
$.ajax({ 
    async: true,      
    method: 'POST', 
    dataType: 'json', 
    url: '../public/userfiles', 
    data: {"_token": csrf }, 
    complete: function(data) { 
     var maxsize = 314572800; 
     var freesize = maxsize - data.responseJSON; 
     if(file.size > freesize){ 
      alert('Нямата достатъчно свободно пространсво.'); 
     } 
     else { 
      alert('Успешно качен файл'); 
      return myDropzone.processQueue();   
     } 
    } 
}); 

değil küresel dropzone sınıfından

bkz: http://www.dropzonejs.com/#config-autoProcessQueue Bir `Dropzone` örneğinde` processQueue` çağırmanız gerekir