2013-02-28 3 views
0

Вот пример кода, который я ожидаю для печати сообщения каждую секунду.Как отобразить результаты петли PHP Мгновенно с использованием сценария JS

set_time_limit(60); 

foreach($array as $key => $value) 
{ 
    echo $value; 

    sleep(5); 
} 

Я задаюсь вопросом, как сценарий JS должен выглядеть для вывода результатов $ значения во время каждого шага в цикле мгновенно, не дожидаясь, пока он не остановится?

+1

использовать 'AJAX' и вызывать данные' PHP'. –

+0

Буферизация вывода может быть лучшим способом пойти сюда. (fab beat меня к этому :)) – jammypeach

ответ

-1

Почему JavaScript?

Вы можете направить вывод в любое время до того, как сценарий заканчивается flush():

set_time_limit(60); 

foreach($array as $key => $value) 
{ 
    echo $value; 
    flush(); 

    sleep(5); 
} 
0

Вы не можете получить доступ к PHP переменных с помощью JavaScript. JavaScript запускается внутри браузера, тогда как PHP работает на сервере.

Вы должны использовать решение fab и отправить текущий буфер вывода в браузер с помощью echo и flush(). Но как только вы это сделаете, больше не нужно использовать JavaScript, так как текст будет отображаться в любом случае.

foreach($array as $key => $value) 
{ 
    echo $value; 
    flush(); 

    sleep(5); 
} 
0

Javascript может (и должны) делать все газораспределительные вещи для вас, было бы гораздо более разумным для вывода массива в виде закодированном строки JSON, которые могут быть распечатаны в ваш HTML как переменная JavaScript.

<script> 
var array = "<?php echo json_encode($array); ?>"; 
</script> 

Вы можете легко использовать javascript для анализа массива и использовать браузер для отображения каждого сообщения на расстоянии 1 секунда. После того, как вы превратили массив обратно из строки JSON к массиву что-то вроде ...

var clearInterval = setInterval(deliver_message,1000); // Run a function every second 

function deliver_message() { 
    document.write(array.shift()); //This could be a Jquery append, or similar 
    if (array.length == 0) 
     clearInterval(loop); 
} 

Сервер обработки сторона есть, чтобы доставить всю информацию в браузере, это на стороне клиента ... JavaScript. .. то есть, чтобы манипулировать тем, как он отображается.

 Смежные вопросы

  • Нет связанных вопросов^_^