Сообщение от Alexandroppolus
|
Цикл while (go) будет выполняться, пока go != 0. Обнулить её могут не ранее, чем в след. витке событийного цикла. А он не наступит, пока не закончится цикл while (go)
|
Почему не наступит? Ведь это цикл и может сложиться ситуация, по крайней мере я стремлюсь, чтобы она происходила, когда исполнение зайдет в код:
if(r.data.folder == ''){
go = 0;
}
описанный в рамках функции done()
Сообщение от Alexandroppolus
|
Стандартное решение - убрать цикл, каждую след. итерацию (запрос) запускать в done, строка 36
|
Что-то типа такого
jQuery(document).ready(function (){
...
jQuery.getJSON('index.php?option=com_vm3delpics&task=fsdelete.read&format=json', {
data: {
"time_limit":time_limit,
"from":from,
"read_cnt":read_cnt
}
})
.done(function(r) {
if (!r.success && r.message){
alert(r.message);
}
if (r.messages){
Joomla.renderMessages(r.messages);
}
if (r.data){
debugger;
if(r.data.stop_inc == 0 ){
read_cnt = r.data.read_cnt*2;
}
else{
read_cnt = r.data.read_cnt;
}
$from = r.data.from;
if(r.data.folder != ''){
jQuery.getJSON('index.php?option=com_vm3delpics&task=fsdelete.read&format=json', {
data: {
"time_limit":time_limit,
"from":from,
"read_cnt":read_cnt
}
})
}
}
})
.fail(function() {
alert('Ошибка Ajax запроса!');
})
.always(function() {
alert('Ajax запрос завершен');
});
});
?
Задача в цикличном считывании данных с сервера, пока не закончатся, порциями. Как тогда туда вместить новую обработку ответа с помощью функции done? Писать такие вложенные jQuery.getJSON().done().fail().always() до бесконечности?..

Ведь не будет происходить перезагрузка страницы, и вся обработка в первой done() не будет выполняться...
Попробовал тот же код запустить, просто убрав обрамление while, увидел по крайней мере ответ функций fail и always. Что же с ответом от сервера не так? Выходит php не смотря на исполняемую строку echo new JResponseJson($result); не посылает ответ? Или может ответ посылается/ловится на туда или не там?
