我想为我的网站创建一个实时日志。 PHP脚本从data / log.txt获取内容并回显它。然后通过JavaScript每秒钟重复相同的过程。
我使用此代码对其进行测试,但存在一些问题:
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = startInterval();
function startInterval()
{
setInterval("loadLog();",1000);
}
function loadLog()
{
document.getElementById('log').innerHTML = "<?php
$datei=fopen("data/log.txt","r");
while(!feof($datei))
{
$zeile = fgets($datei,1000);
echo $zeile."<br>";
}
fclose($datei);
?>";
}
</script>
</head>
<body>
Javascript refresh:<br>
<div id="log"></div>
</body>
</html>
Testing PHP seperatly:<br>
<?php
$datei=fopen("data/log.txt","r");
while(!feof($datei))
{
$zeile = fgets($datei,1000);
echo $zeile."<br>";
}
fclose($datei);
?>
PHP代码片段本身可以很好地工作。但是我似乎无法让JavaScript部分正常工作...
问题1: 当我更改log.txt的内容时,JavaScript部分不会像预期的那样自我刷新。我是JavaScript的初学者,所以我可能犯了一些明显的错误,或者对应该如何做有一个错误的想法。
问题2:
只要log.txt仅包含一行,则输出有效:
Javascript刷新:test1
分别测试PHP:test1
但是,只要我添加一个偶数空行,JavaScript部分就不会加载任何东西。
答案 0 :(得分:1)
借助对我的第一个问题的评论,我想到了下面的代码,效果很好:
<html>
<head>
<title></title>
<script src="resources/javascript/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
setInterval(function(){
$('#log').load('loadlog.php');
}, 2000) /* time in milliseconds (ie 2 seconds)*/
</script>
</head>
<body>
Javascript refresh:<br>
<div id="log"></div>
</body>
</html>
Testing PHP seperatly:<br>
<?php
$datei=fopen("data/log.txt","r");
while(!feof($datei))
{
$zeile = fgets($datei,1000);
echo $zeile."<br>";
}
fclose($datei);
?>