Как реализовать постепенный вывод данных из php через Ajax?

Собственно сабж. Хочу после сабмита формы выводить результаты работы обработчика по мере его работы.

Вот такой сабмит:
<script type="text/javascript">
$("#f1").on("submit", function(){
$(".loading").show();
$.ajax({
	url: '/test.php',
	method: 'get',
	dataType: 'html',
	data: $("#f1").serialize(),
	success: function(data){
		$(".loading").hide();
		$('#mresult').html(data);
	}
});
return false;
});
</script>

Вот такой обработчик:
<?php
$spacer_size = 8;
echo "hello1<br>";
echo str_pad('', (1024 * $spacer_size), "\n");
	if(ob_get_level()) ob_end_clean();
sleep(2);
echo "hello2<br>";
echo str_pad('', (1024 * $spacer_size), "\n");
	if(ob_get_level()) ob_end_clean();
sleep(2);
echo "hello3<br>";
echo str_pad('', (1024 * $spacer_size), "\n");
	if(ob_get_level()) ob_end_clean();
sleep(2);
echo "hello4";
?>

Тобиш в этом случае хочу каждые 2 секунды видеть новый "Хэллоу".
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
IMHO AJAX так не сделает.
Он получает всю страницу, т.е. дожидается разрыва коннекта, после чего возвращает результат.
Тут вам Websocket нужен...
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Используйте ReadableStream, чтобы читать ответ по мере поступления:
https://learn.javascript.ru/fetch-progress
https://translated.turbopages.org/proxy_u/en-ru.ru...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы