0

PHPファイルを読み取る簡単なコードのスクリプトがあり、ファイルが変更されると、ページ上でCHANGEDと表示され、ページを更新したり、コンテンツを変更したりします。今のところ、コンテンツが表示され、関数が1回または2回繰り返された後、何も表示されません。何か助けはありますか?

コードは次のとおりです。

<?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

これは、クライアントがPHPを実行するためにJavaScriptにPHPを含めることができないためです。はい、PHP値を含めることができますが、それだけです。ブラウザのソースコードを見てください。

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

ご覧のとおり、関数document.writeは空の文字列で呼び出されます""。これは、結果のページがクライアントに送信される<?php ?>に、クライアントではなくサーバーですべてが実行されるためです。

すべてのPHPコードは一度だけ解析さ$contents==$newcontentsれるtrueため、が表示されることはありませんChanged

チャットサーバーのようなものを実現するには、新しいhttpリクエストが必要です。AJAXをご覧ください。

于 2012-06-15T23:08:27.793 に答える