如何使用JS脚本立即显示PHP循环结果

时间:2013-02-28 10:46:31

标签: php javascript loops output

以下是我希望每秒打印消息的代码示例。

set_time_limit(60);

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

    sleep(5);
}

我想知道JS脚本应该如何在循环的每一步中立即输出$ value的结果而不等到它停止?

3 个答案:

答案 0 :(得分:0)

您无法使用JavaScript访问PHP变量。 JavaScript在浏览器中运行,而PHP在服务器上运行。

您必须使用fab的解决方案并使用 echo flush()将当前输出缓冲区发送到浏览器。但是一旦你这样做,就不再需要使用JavaScript,因为无论如何都会显示文本。

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

    sleep(5);
}

答案 1 :(得分:0)

Javascript可以(并且应该)为您完成所有计时工作,将数组输出为编码的JSON字符串会更加明智,可以将其作为javascript变量打印到HTML中。

<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 ...即可操作它的显示方式。

答案 2 :(得分:-1)

为何选择JavaScript?

您可以在脚本完成flush()之前随时发送输出:

set_time_limit(60);

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

    sleep(5);
}