0

我有一个读取 PHP 文件的简单代码脚本,当它被更改时,它应该在页面上显示 CHANGED,我将更改它以刷新页面或更改内容。现在,它显示内容,该功能重复一两次,然后什么都不显示。有什么帮助吗?

这是代码:

<?php
$handle = fopen("../chat/real/chatserver.php", "r");
$contents = fread($handle, filesize("../chat/real/chatserver.php"));
fclose($handle);
$newcontents = $contents;
echo $contents;
?>

<script type="text/javascript">
checkchanged();
function checkchanged() {
document.write("<?php $handle = fopen('../chat/real/chatserver.php', 'r');
$newcontents = fread($handle,filesize('../chat/real/chatserver.php'));fclose($handle);?>");
document.write("<?php if(!($contents==$newcontents)){echo 'Changed';} ?>");
setTimeout('checkchanged()',3000);
}
</script>

链接到示例

谢谢您的帮助

4

1 回答 1

2

这是因为您不能在 JavaScript 中包含 PHP 以便客户端执行它。是的,您可以包含 PHP 值,但仅此而已。在浏览器中查看源代码:

<script type="text/javascript">
checkchanged();
function checkchanged() {
document.write("");
document.write("");
setTimeout('checkchanged()',3000);
}
</script>

如您所见,该函数document.write使用空字符串调用""。这是因为在结果页面被发送到客户端之前<?php ?>,其中的所有内容都在服务器上执行,而不是在客户端上执行。

$contents==$newcontents由于每个 PHP 代码只会被解析一次true,所以你永远不会看到Changed

要实现类似聊天服务器的功能,您需要新的 http 请求。看看 AJAX。

于 2012-06-15T23:08:27.793 回答