genbodev
11/19/2018 - 2:36 PM

JQuery, FormData, Ajax, Deffered

Как отправить несколько файлов-изображений разными аяксами и дождаться выполнения всех запросов?

// Только изображения
var error = false;
for (var k = 0; k < files.length; k++) {
  if (!files[k].type.match('image.*')) {
   error = true;
  }
}

if (error === true) alert('Только изображения, плиз');

var deferreds = [];
var formData = new FormData();
for (var i = 0; i < files.length; i++) {
 formData.append('file_' + i, files[i]);
}

deferreds.push(
  $.ajax({
   url: '/File/ajaxUpload',
   data: formData,
   processData: false,
   contentType: false,
   type: 'post',
   dataType: 'json',
   success: function (data) {
    //
   }
  })
)

$.when.apply($, deferreds).done(function() {
 alert('Всё ОК!');
});

// Теперь в PHP в массиве $_FILES будут доступны файлы в file_1, file_2...