Я использую jQuery Multifile uploader ( https://github.com/blueimp/jQuery-File-Upload ) с PHP
и я хочу обновить страницу загрузки после того, как все файлы будут загружены, я использую базовый плюс пользовательский интерфейс, пожалуйста, скажите, есть ли какой-либо простой способ его достижения
Используйте события done и fail, а также некоторые счетчики. Нашли эти события в документации по параметрам .
var fileCount = 0, fails = 0, successes = 0; $('#fileupload').fileupload({ url: 'server/php/' }).bind('fileuploaddone', function(e, data) { fileCount++; successes++; console.log('fileuploaddone'); if (fileCount === data.getNumberOfFiles()) { console.log('all done, successes: ' + successes + ', fails: ' + fails); // refresh page location.reload(); } }).bind('fileuploadfail', function(e, data) { fileCount++; fails++; console.log('fileuploadfail'); if (fileCount === data.getNumberOfFiles()) { console.log('all done, successes: ' + successes + ', fails: ' + fails); // refresh page location.reload(); } });
Вы можете использовать событие stop
. Это эквивалентно глобальному событию ajaxStop
(но только для запросов на загрузку файлов).
stop: function(e){ location.reload(); }
Я использовал код Райана, но возникла проблема. Значение data.getNumberOfFiles () уменьшалось по мере того, как файлы были загружены, в то время как fileCount увеличивался, поэтому мой сценарий загрузки был прерван в середине моей загрузки, где data.getNumberOfFiles () был равен fileCount.
Вот как я изменил скрипт Райана, и теперь он работает как шарм:
var fileCount = 0, fails = 0, successes = 0; var _totalCountOfFilesToUpload = -1; $('#fileupload').bind('fileuploaddone', function (e, data) { if (_totalCountOfFilesToUpload < 0) { _totalCountOfFilesToUpload = data.getNumberOfFiles(); } fileCount++; successes++; if (fileCount === _totalCountOfFilesToUpload) { console.log('all done, successes: ' + successes + ', fails: ' + fails); // refresh page location.reload(); } }).bind('fileuploadfail', function(e, data) { fileCount++; fails++; if (fileCount === _totalCountOfFilesToUpload) { console.log('all done, successes: ' + successes + ', fails: ' + fails); // refresh page //location.reload(); } });
Надеюсь, это поможет другим людям! 🙂
Я использовал этот код и до сих пор хорошо работает.
$('#fileupload').bind('fileuploadstop', function (e) { console.log('Uploads finished'); location.reload(); // refresh page });