Я пытаюсь распечатать итерацию цикла одну за другой вместо одной, используя 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();
}
?>
Это связано с тем, что после того, как вы разместите цикл запроса, получите ответ и вернете ответ методу ajax
Цикл выполняется так быстро, что вам нужно перевести цикл в режим ожидания, как только он будет выполнен так раз, чтобы после того, как вы получили результат через несколько секунд, цикл снова был выполнен, и вы снова получили ответ
пожалуйста, следуйте этой функции тайм-аута, чтобы ненадолго засыпать
Где я принадлежу параметру, вы проходите через цикл и не теряете динамическое значение ….
> (function(i){
> setTimeout(function(){
>
> }, 1000 * i);
> }(i));
Это правда. 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.