печатать один за другим цикл вместо использования php и ajax

Я пытаюсь распечатать итерацию цикла одну за другой вместо одной, используя ajax, возможно ли это?
подобно
итерация 1
итерация 2

и т. д. но они не должны сразу, а один за другим, как цикл работает

Вот мой код ajax и php. В этот момент весь код обрабатывается и, наконец, выдает результат вместо одного за другим.

<div id="div1"></div>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>

jQuery(document).ready(function($) {

$("button").click(function(){

$.ajax({url:"counter.php",success:function(result){
$("#div1").html(result);
}});
});});
</script>
<button name="button" value="button" style="width:200px; height:200px;">

Вот код PHP

<?php

for ($i = 0; $i < 10; $i++)
{
echo "<div>" . time() . ": Iteration $i</div>";
sleep(1);

flush();
}

?>

0

Решение

Это связано с тем, что после того, как вы разместите цикл запроса, получите ответ и вернете ответ методу ajax
Цикл выполняется так быстро, что вам нужно перевести цикл в режим ожидания, как только он будет выполнен так раз, чтобы после того, как вы получили результат через несколько секунд, цикл снова был выполнен, и вы снова получили ответ

пожалуйста, следуйте этой функции тайм-аута, чтобы ненадолго засыпать

Где я принадлежу параметру, вы проходите через цикл и не теряете динамическое значение ….

> (function(i){
>         setTimeout(function(){
>
> }, 1000 * i);
>     }(i));
0

Другие решения

Это правда. PHP (по умолчанию) отправит вывод, если будет выполнен полный PHP-скрипт. Если вам нужен счетчик, вы должны перебирать вызовы AJAX вместо вашего PHP-кода. Этот пример будет работать:

    var currentCounter = 0;
var countTill = 10;

function invokeCounter()
{
$.ajax({url:"counter.php?counter="+currentCounter,success:function(result)
{
$("#div1").html(result);

if(currentCounter >= countTill)
{
clearInterval(myCounter);
}

currentCounter++;

}});
}

var myCounter = setInterval(function()
{
invokeCounter();
}, 1000);

В вашем PHP вы можете получить текущий счетчик

<?php
echo "<div>" . time() . ": Iteration ".$_GET['counter']."</div>";
?>

Я думаю, вы знаете, что это неправильное решение для веб-счетчика, но вы, вероятно, экспериментируете / тестируете что-то в JQuery / AJAX / PHP.

0

По вопросам рекламы [email protected]