Запросы AJAX в Chrome с использованием jQuery замораживают страницу до тех пор, пока они не будут завершены.

Код ниже хорошо работает в Firefox - отображает индикатор выполнения, который прогрессирует для каждого загружаемого файла, в то время как в Chrome он отображает индикатор выполнения только в конце транзакция, также когда я нажимаю кнопку «Отправить», она зависает до завершения функции.

var max = files.length + 1;
var progress_step = 0;
$.post(form.action, $(form).serialize(), function(response){
  var data = jQuery.parseJSON(response);
  if ("errors" in data){
    //...;
  }
  else if ("work_id" in data){
    var work_id = data.work_id;
    //initial increase of progress once Work was created
    progress_step = progress_step + 1;
    progress(progress_step, max);

    $.each(files, function(index, obj){
      uploadFile(work_id, obj);
      progress_step = progress_step + 1;
      progress(progress_step, max);
    });
  }
});

...

function uploadFile (w_id, obj) {    
  var base64_start = obj.src.indexOf(',') + 1;
  $.ajax({
    type: 'POST',
    url: '/works/upload_image',
    data: {work_id: w_id, pic: obj.src.substr(base64_start), pic_type: obj.file.type},
    processData: true,
    timeout: 60000,
    async: false,
    dataType: 'text'
  }); 
}
6
задан Cœur 23 September 2017 в 14:14
поделиться