День добрый!
Не уверен, что это правильное решение, если есть лучше, буду рад подсказкам.
Со страницы делается ajax-запрос, который отлавливается обработчиком. Далее обработчик получает данные с другого моего сайта, обновляет данные и возвращает количество элементов, которые были обновлены и offset.
URL страницы, с которого обработчик получает данные выглядит примерно так:
https://site.com/updateitems?offset=0
За раз страница отдает информацию не более чем о 20 элементах. Т.е. первая партия при offset=0, следующая при offset=20 и т.д.
Можно ли сделать так, чтобы ajax-запрос повторялся до тех пор, пока количество обновленных элементов, которое возвращает обработчик, не будет меньше 20.
Что-то наподобие.
var offset = 0;
$.post(document.location.href, {action: 'updateItems', offset: 0}, function(res) {
var data = JSON.parse(res, true);
if (data.updated == 20) {
offset = data.offset + 20;
//повторить ajax-запрос с новым offset
} else {
//значит был последний запрос.
}
});
Правильно ли я понимаю, что нужно писать рекурсивную функцию?
P.S. я был бы не против делать всего один ajax-запрос, а дальше уже все делать в php-обработчике. Но хотелось бы как-то параллельно возвращать промежуточный результат юзеру, мол
"Обновились товары с 1 по 20...", далее
"Обновились товары с 21 по 40" и тд и тп. Но если я в скрипте укажу
die('Обновились товары с...')
, то он же перестанет выполняться. Можно ли это как-то реализовать в PHP?