让我说我的PHP代码类似于下面。 。
$range = range(0, 5);
foreach ($range as $times) {
if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<1; $i++){
echo "<br>example ".$times;
echo str_pad('',4096)."\n";
ob_flush();
flush();
sleep(1.2);
}
ob_end_flush();
}
它显示的是什么。 。 。
example1
example2
example3
example4
example5
它在显示下一行之前等待很短的一段时间,我不想一次显示所有五行,我想用下一行替换example1,所以这五种情况都是如此,这可能是在PHP吗?欢迎任何答案
答案 0 :(得分:3)
您需要使用javascript替换页面上已有的元素:
<p id="ob">1</p>
<?php
$range = range(0, 5);
foreach ($range as $times) {
if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<1; $i++){
echo "<script>document.getElementById('ob').innerHTML ='example$times';</script>";
echo str_pad('',4096)."\n";
ob_flush();
flush();
sleep(1.2);
}
ob_end_flush();
}
?>
或者更好的方法是使用AJAX轮询服务器以获取下一个值。
<?php
if(isset($_GET['poll'])){
echo $_GET['poll']+1;
die;
}
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var value = 0;
function poll(){
setTimeout(function(){
$.ajax({ url: "./test.php?poll="+value,cache: false,
success: function(data){
value = data;
$("#ob").html('example'+value);
//Next poll
poll();
}});
}, 1200);
}
$(document).ready(function(){
poll();
});
</script>
<p id="ob">example0</p>
答案 1 :(得分:2)
假设您正在输出html,您应该在javascript中在客户端执行此操作。
php替代方案是显示一行并重新加载页面以显示下一行。不必要的复杂和浪费资源。
请注意,php无法修改已发送到浏览器的html。