读取文本文件,通过PHP回显并每隔几秒钟用JS刷新一次

时间:2019-02-19 17:06:34

标签: javascript php html

我想为我的网站创建一个实时日志。 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部分就不会加载任何东西。

1 个答案:

答案 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);                                                         
?>