网页浏览器不显示文本文件的更新版本,但打开新浏览器显示正确的文件


Webbrowser is not showing the updated version of a txt file but opening a new browser shows correct file

我正在尝试PHP与Ajax和JQuery一起使一个网站,我可以写到一个文本文件,然后有网站加载文本文件的内容到一个div。

这是我使用的JQuery代码。

$(document).ready(function() {
    setInterval(function() {
        $("#text").load("storydoc.txt");
    }, 2000);
});

这里是PHP和相关的HTML。

<div id="text">
</div>
<form id="form" method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    <input id="wordinput" class="input" type="text" name="word" maxlength="30"></input>
    <input id="submit" class="hidden" type="submit" name="submit"></input>
</form>
<?php
    if(isset($_POST['submit'])) {
        $word = " " . $_POST['word'];
        $ret = file_put_contents('text.txt', $word, FILE_APPEND | LOCK_EX);
        if($ret === false) {
            die("There was an error writing this file");
        }
    }
?>

它所做的就是让用户使用#wordinput写入"text.txt",然后使用.load()更新#text以显示来自"text.txt"的新更新文本。这些文本也可以被其他用户看到和写入。

我遇到的问题是文本文件可以在不同的浏览器上显示不同的内容。例如,如果我在Firefox中打开网站并在文本中写入一些内容。文件,显示不出来。即使我去到cPanel文件管理器内的文件本身,它仍然显示文本,因为它是当我得到的网站。如果我打开Chrome浏览器并进入网站,它会在网站和文件管理器上显示新更新的文本。写更多的单词也会立即显示在Chrome网站上。同时,Firefox在刷新后仍然显示相同的过时文本文件内容。在此之后,它可以在所有浏览器上完美地工作,但首先打开文件的浏览器除外。然后,如果你让文本文件未编辑一段时间,我又会遇到同样的问题,不得不切换浏览器。

从Chrome开始,它的工作方式与其他方式相同,所以我认为它与特定的web浏览器没有任何关系。对我来说,第一次打开"text.txt"的浏览器似乎保存了它的副本,并且从那里开始只使用它,我不知道如何解决它。

欢迎任何解决方案或想法!提前感谢!

在load语句的文件标题后附加一个时间字符串以防止缓存-

$(document).ready(function() {
    setInterval(function() {
        var ms = (new Date).getTime(); // epoch time
        $("#text").load("storydoc.txt?ms=" + ms ); // add query string
    }, 2000);
});

添加的字符串对实际文件来说是无关紧要的,但每次都会产生请求'new'的影响,因为添加的时间字符串将是不同的,并且缓存中不会有副本。