Tixter
@Tixter
Приходится осваивать PHP...

Как выполнить что-то до ajax и после, не включая его в синхронный режим?

Приветствую.

Недавно выучил php, взялся за необходимый разработчику js, и воткнулся во вроде бы простенькую задачку:

Мультизагрузка изображений через ajax. Если пользователь грузит несколько файлов разом, то все сразу послать нельзя - сработает upload_max_filesize. Поэтому посылаю по очереди, и по очереди вывожу миниатюры, НО...
До начала загрузки мне нужно скрыть поле загрузки файла и заблокировать кнопку submit, а после вывода последней миниатюры вернуть все как было.
Если я вставляю убирание-возвращение в начало и конец .onchange-функции, то он делает то и другое сразу, а не ждет загрузки. А мне надо, чтобы убрал, грузил все до последнего, затем возвращал.

Это, вроде, из-за асинхронности ajax, но в синхронный режим его ставить нельзя - вся страница повиснет, пока файлы грузятся.

var fileload = document.querySelector('#loadfile');
        fileload.onchange = function () {
            // СЮДА НУЖНО ВСТАВИТЬ УБИРАНИЕ КНОПКИ И БЛОКИРОВКУ SUBMIT
            // в переменную files заносятся файлы и включается formData
            for(var i = 0; i < files.length; i++){
                formData.append('image',files[i]);
                $.ajax({
                    // формируем и отправляем запрос
                }).done(function(o) {
                    // выводим превьюшки по мере загрузки файлов
                });
            }
            // А ЗДЕСЬ ВСЕ ВЕРНУТЬ КАК БЫЛО
        }


Подскажите, как это решить. Мне самому js еще учить и учить.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
Negwereth
@Negwereth
lvivcss.com.ua
var fileload = document.querySelector('#loadfile');
        fileload.onchange = function () {
            // СЮДА НУЖНО ВСТАВИТЬ УБИРАНИЕ КНОПКИ И БЛОКИРОВКУ SUBMIT
            // в переменную files заносятся файлы и включается formData
            for(var i = 0; i < files.length; i++){
                formData.append('image',files[i]);
                $.ajax({
                    // формируем и отправляем запрос
                }).done(function(o) {
                    // выводим превьюшки по мере загрузки файлов
                    //  ЗДЕСЬ НАДО ВОЗВРАЩАТЬ КАК БЫЛО
                });
            }
        }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы