※ ChatGPTを利用し、要約された質問です(原文:サーバーにあるファイルの内容を表示)
サーバーにあるファイルの内容を表示
このQ&Aのポイント
自分のサーバで温度データを測定しそれをweb公開したいと考えています。No.1
サーバー上でファイルの内容を表示するために、JavascriptとPHPの両方を使用しています。
Javascriptでの表示では、クライアントのパソコンがファイルを読みに行ってしまうため、PHPでの表示方法を採用しています。ただし、画面の更新が気になる点があります。
自分のサーバで温度データを測定しそれを web公開したいと考えています。No.1
<html>
<head>
<title>サンプル</title>
<script type="text/javascript">
<!--
function jikoku() {
iomode=1;
format=0;//ASCII format
//file object
myobject=new ActiveXObject("Scripting.FileSystemObject");
//file open
file=myobject.OpenTextFile("c:\\Log.txt",iomode,true,format);
//read until eof
dd="";
while(!file.AtEndOfStream){
dd+=file.ReadLine()+"\n";
}
file.Close();
//display
document.F1.T1.value = dd;
window.setTimeout("jikoku()", 1000);
}
// -->
</script>
</head>
<body onload="jikoku()">
<form name="F1" action="#">
<input type="text" name="T1" size=50>
</form>
</body>
</html>
のプログラムをつくり うまくいったと思ったのですが
Javascriptのため クライアントのパソコンではクライアントの
c:\\Log.txtを読みに行ってしまうので ダメなことが分かりました。
そこで PHPで No.2
<html>
<meta http-equiv="refresh" content="60">
<head>
<title>温度・湿度</title>
</head>
<body>
<?php
$file = fopen("C:\\Log.txt","r");
$dd = fgets($file);
print("$dd");
fclose($file);
?>
</body>
を作って 大体のところうまく表示できたのですが
画面を refreshしているところが なんとも 気になります。
サーバー上の プログラムを読んで
No.1のような 表示はできないでしょうか・・・・
C:\\Log.txtの更新間隔は いまのところ 1分間隔です。
Javascriptと PHPで できると思うのですが・・・・
よろしく お願いします。
補足
AJAXでやってみました。 <html lang="ja"> <head> <meta http-equiv="Content-Type" Content="text/html;charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>温度・湿度測定</title> <script type="text/javascript"> <!-- var xmlHttp; var dd; function loadText(){ if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }else{ if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlHttp = null; } } xmlHttp.onreadystatechange = checkStatus; xmlHttp.open("post", "http:****************", true); xmlHttp.send(null); window.setTimeout("loadText()", 1000); } function checkStatus(){ if (xmlHttp.readyState == 4 && xmlHttp.status == 200){ dd = xmlHttp.responseText; document.F1.T1.value = dd; } } // --> </script> </head> <body onload="loadText()"> <form name="F1" action="#"> <input type="text" name="T1" size=50> </form> </body> </html> こんな感じです。 getでは キャッシュを読むらしく更新できずPOSTに してみました。 あと 非同期では 更新しないみたい・・・・・ 大体のところ うまくいったので とりあえず満足です。 ありがとうございました。