如何在不刷新PHP的情况下打开,读取,关闭,更新,重新打开和读取文件

kevwpl

我正在尝试使用html和php制作聊天应用程序。

我正在编写一个带有整个聊天记录的.txt文件,并且希望每五秒钟阅读一次,而无需刷新页面。我试图在javascript中使用循环,但在再次打开文件后不会刷新文件。

function readChat(){
      clearArea();
    <?php

        if ($file = fopen("chat.txt", "r")) {
          while(!feof($file)) {
            $line = trim(fgets($file));
            if($line !== " "){
              $arr = explode(":", $line, 2);
              $name = $arr[0];
              $string = $arr[1];
              $string = str_replace(array("\r", "\n"), '', $string);


              if($name === $_COOKIE["username"] && $string !== "" && $string !== " " && $string !== "\n"){
                echo "selfMessage(\"".$string."\");";
              }else if($line !== "" && $line !== " " && $line !== "\n" && $string !== "" && $string !== " " && $string !== "\n"){
                echo "otherMessage(\"".$string."\", \"".$name."\");";
              }
            }
          }
          fclose($file);
        }



    ?>
    }

      window.setInterval(function() {
        readChat();
      }, 5000);

这是我到目前为止尝试过的。

罗曼

您遇到的问题是由于混合使用了PHP和Javascript代码。

首先,您应该知道PHP代码在服务器上执行,该服务器生成将发送到客户端(Web浏览器)的页面内容。然后,该Web浏览器将执行接收到的页面内容中包含的Javascript代码。

您是否已经知道为什么聊天没有更新?

当请求页面时,您的PHP函数仅执行一次,并将聊天消息插入到readChat()函数主体中当浏览器收到包含readChat()它的网页数据时,只会看到聊天消息,就好像它们是硬编码到函数中一样!

例如,以下PHP脚本:

function someJSFunc() {
    <?php
        $now = date('m/d/Y H:i:s', time());
        echo "var now = '$now';";
    ?>
    console.log(now);
}

结果将以下功能发送给客户端:

function someJSFunc() {
    var now = '6/4/2019 16:39:18';
    console.log(now);
}

无论客户端调用多少次,someJSFunc()它始终会输出相同的日期和时间,因为那是PHP函数执行的时间。

有时以这种方式混合使用PHP和Javascript可能非常有用,但是要完成您要查找的内容,您将需要使用AJAX请求。

使用JQuery可以轻松完成AJAX请求您需要做的就是<script>在页面标题中添加另一个标签以包含JQuery脚本。可以在其网站上找到有关设置JQuery的更多说明。

接下来,您必须修复您的readChat()功能。不用在该函数中使用PHP,只需使用javascript并使用JQuery来执行GET请求。

function readChat() {
    clearArea();
    $.get("getchat.php", function(data) {
        // inside this function data will contain whatever your PHP script echos
        $('#chat').html(data);    // for example, replacing a div with id="chat" with the data received from getchat.php
    });
    window.setInterval(function() { readChat(); }, 5000);  // I would personally move this outside of readChat() so that it is only called once...
}

getchat.php每次浏览器调用时都会加载此功能readChat(),并设置readChat()每5秒调用一次的间隔里面的函数$.get()是您可以使用从接收的数据的地方getchat.php它通常只是一个字符串,您可以将其插入到聊天区域或div中,但这取决于您如何使getchat.php脚本工作。

最后,您只需创建一个名为的新PHP脚本getchat.php,它将读取聊天文件并以您希望看到的格式将其回显到页面中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不保存到磁盘的情况下从request.FILES打开和读取文件

如何在不刷新数据的情况下打开Excel

Java:在不锁定文件的情况下打开和读取文件

如何在不打开文件的情况下更新Excel文件(数据刷新和更新公式)?

如何在不阻止Windows的情况下打开文件?

如何在不关闭的情况下保存和读取c ++ fstream文件

ruby popen3-如何在不重新打开过程的情况下重复写入stdin和读取stdout?

如果用户在不选择文件的情况下打开并关闭它,如何防止输入文件加倍

如何在不触发事件的情况下打开/关闭引导程序模式?

如何在组织模式下刷新标签列表而不关闭和重新打开emacs

如何在不立即读取整个文件的情况下编辑文本文件

如何在不覆盖的情况下添加到数组(从读取行和爆炸起)PHP

如何在不打开文件的情况下写入文件

如何在不打开文件的情况下选择文件?

如何在不创建新文件的情况下使用texteditor打开终端输出?

如何在不确认的情况下减少打开的二进制文件?

如何在不每次输入密码的情况下打开“ root”文件?

如何使用函数定义打开、读取和关闭文件

打开命令行并在不关闭的情况下读取输出

如何在不缓存的情况下测量文件读取速度?

我应该如何在不获取 FileNotFoundException 的情况下读取文本文件?

如何在不写入文件的情况下读取压缩的输入流?

如何在不丢失数据类型的情况下读取 xlsx 文件

如何在内存不耗尽的情况下读取大型CSV文件?

如何在不刷新Django Javascript中每个帖子的页面的情况下打开编辑部分?

在不打开文件的情况下读取文件的前N行(Python)

XCTest UI测试-如何在不重新启动的情况下关闭和打开应用程序?

Flutter - 如何在不重新打开小部件的情况下更新文本字段的值?

如何在不指定文件名的情况下从文件夹中读取 Excel 文件?