Рекурсивная функция jQuery для загрузки большого количества файлов, предоставляя пользователю обратную связь - PullRequest
0 голосов
/ 15 апреля 2010

Я пытаюсь написать функцию jQuery, чтобы позволить пользователям загружать много файлов одновременно. Вот функция, которую я подумал, чтобы дать пользователю некоторую обратную связь о ходе процесса загрузки.

function uploadFiles(numbersOfFiles, start) {
   $("#info").html(start + " files uploaded");
   $.post('upload.php', {
      start: start
   }, function (data) {
      start += 5;
      if (start < numbersOfFiles) {
         uploadFiles(numbersOfFiles, start);
      } else {
         $("#info").html("All files have been uploaded");
      }
   });
}

Функция вызывает скрипт php для загрузки 5 файлов, затем, если есть еще файлы для загрузки, она снова вызывает скрипт. Весь процесс работает. Я попробовал это с 100 файлами. Единственное, что не работает, это обновление #info div. DIV обновляется в первый раз, а затем снова только для отображения «Все файлы были загружены». Так что нет никаких отзывов для пользователя о процессе загрузки. Я не могу понять, почему ... Любая помощь?

1 Ответ

0 голосов
/ 15 апреля 2010

$.post выполняется асинхронно. Значение jQuery не ожидает завершения POST, прежде чем выполнить еще один $.post

Следовательно, jQuery очень быстро выполнит все POST, и все, что вы увидите, это сообщение «Все файлы были загружены», даже если фактическое POST все еще ожидает ответов в фоновом режиме.

Чтобы сделать то, что вы хотите сделать, рекурсивно позвоните uploadFiles в complete:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...