El siguiente código funciona bien en Firefox: muestra la barra de progreso que progresa en cada archivo cargado, mientras tanto en Chrome solo muestra la barra de progreso al final de la transacción, también cuando Hago clic en el botón "enviar", se congela hasta que la función finaliza.Las solicitudes de AJAX en Chrome usando jQuery congelan la página hasta que completen
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'
});
}
Gracias @Peter es su trabajo para mí –