Моя проблема в том, что <div>
с индикатором выполнения jQuery (dnc_scrubber.html
) не загружается, пока все остальные запросы не будут заполнены.jQuery не .load() до тех пор, пока .ajax() в обратном вызове .load() не будет завершен?
Есть ли вообще вокруг этого? Я хочу изменить содержание #tabs-1
на индикатор выполнения и оживить его, пока dnc_scrubber.php
выполняет свою работу.
Файлы lines.php
и progress.php
используются, чтобы рассчитать процент работы, проделанной dnc_scrubber.php
, - который обновляет сеанс по мере его поступления. lines.php
и files.php
возвращают переменную сеанса.
$('#tabs-1').load('dnc_scrubber.html', function() {
var querystring = 'col=' + col + '&' + makeQS(files);
var lines = 0;
$('#progressbar').progressbar();
$.ajax({
url: 'dnc_scrubber.php',
type: 'POST',
async: true,
data: querystring,
complete: function() {
for (i = 0; i < files.length; i++) {
$('#complete').append('<a href="process/MATCHED - ' + files[i] + '">MATCHED - ' + files[i] + '</a><br />');
$('#complete').append('<a href="process/SCRUBBED - ' + files[i] + '">SCRUBBED - ' + files[i] + '</a><br />');
}
}
});
$.ajax({
url: 'lines.php',
async: true,
dataType: 'json',
complete: function(json) {
lines = json.total;
}
});
function setProgress() {
if (prog < lines) {
prog = getProgress();
$('#progressbar').progressbar('option', 'value', prog);
setTimeout(setProgress(), 1000)
} else {
$('#progressbar').progressbar('option', 'value', 100);
}
}
var prog = getProgress();
setTimeout(setProgress(), 1000);
});
Я уже пробовал загрузку индикатора выполнения в функции обратного вызова в .ajax()
запроса с async
набором для false
. То же самое происходит - индикатор выполнения не загружается в #tabs-1
до тех пор, пока dnc_scrubber.php
не будет завершен.
Что я могу сделать?
Вы знаете, что такое синхронные и асинхронные запросы? –
Да, я знаю разницу. – jebriggsy
Вы пробовали использовать успех: вместо полного? Я думаю, что это будет обрабатывать каждый, когда они обрабатывают, а не ждать их всех. –