2013-09-05 2 views
2

Im используя JQuery Многофайлового загрузчика (https://github.com/blueimp/jQuery-File-Upload) с PHPОбновления страницы после завершения загрузки в JQuery Мульти файл Uplaoder

, и я хочу, чтобы обновить страницу даты загрузки сразу все файлы были загружены, Im используя основной плюс пользовательский интерфейс, пожалуйста, сообщите me, если есть какой-либо простой способ его достижения

ответ

11

Используйте сделанные и неудачные события вместе с некоторыми счетчиками. Нашли эти события в options documentation.

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(); 
    } 
}); 
+0

Я люблю тебя, мужчина! – Lollipop

3

Вы можете использовать событие stop. Он эквивалентен глобальному событию ajaxStop (но только для запросов на загрузку файлов).

stop: function(e){ 
     location.reload(); 
} 
1

Я использовал код Райана, но возникла проблема. Значение 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(); 
    } 
}); 

Я надеюсь, что это поможет другим людям, а также! :)

1

Я использовал этот код и до сих пор хорошо работает.

$('#fileupload').bind('fileuploadstop', function (e) { 
    console.log('Uploads finished');   
    location.reload(); // refresh page 
    }); 
Смежные вопросы