1

我对flush()使用“Internet Explorer”的 HTML 表有疑问。我编辑了以下代码以在带有 的表中显示“实时”回显flush(),我将flush()调用放在</table>标记之后,因为在“Internet Explorer”中它不起作用,但我不知道为什么只有我的第一个回显循环进入桌子,其他人出去。有什么帮助吗?

<html lang="en">
<head>
</head>
<table border='1'>
<tr>
<td>

<?php

 $total = 10;

 for($i=1; $i<=$total; $i++){

 echo "sometext";

 //other stuff

    ?>

</td>
</tr>
</table>
<?php
echo str_repeat(' ',1024*64);

flush();
    sleep(1);

}

?>
</body>
</html>
4

3 回答 3

0

您正在关闭循环内的表格。

<html lang="en">
<head>
</head>
<body>
<table border='1'>
<tr>
<td>

<?php

 $total = 10;

 for($i=1; $i<=$total; $i++){

 echo "sometext";

 //other stuff

  echo str_repeat(' ',1024*64);

  flush();
  sleep(1);
}

?>
</td>
</tr>
</table>

</body>
</html>

证明:在此处输入图像描述

于 2013-06-10T15:52:00.543 回答
0

简而言之,您已经在循环内部而不是在循环外部关闭了表格。所以在第一次迭代之后,您的表格标签不匹配。超出</table>你的闭环花括号}

关于 Internet Explorer 问题。你可能想看看这个: http: //php.net/manual/en/function.flush.php

它讨论了某些 Internet Explorer 版本在开始刷新数据之前需要一定数量的字节。您可能还想尝试在您的声明ob_flush();上方调用。flush();

于 2013-06-10T15:57:18.050 回答
0

浏览器可能正在等待关闭,因为它不知道所有单元格的内容,因此也不知道列的宽度。尝试使用 td 元素的固定值来提示它,例如:

<td style="width: 200px">
于 2013-06-10T16:13:20.773 回答