Код ниже хорошо работает в 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'
});
}