javascript – Webbrowser未显示txt文件的更新版本,但打开新浏览器显示正确的文件

我正在尝试使用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中打开网站并将某些内容写入text.file,则无法显示.即使我在cPanel文件管理器中找到文件本身,它仍然显示我上网时的文本.如果我打开Chrome并转到该网站,它将在网站和文件管理器上显示新的更新文本.还可以在Chrome网站上立即显示更多单词.同时,即使刷新后,Firefox仍然显示相同的过时文本文件内容.在此之后,它完全适用于所有浏览器,但首先打开文件的人.然后,如果你将文本文件保留未编辑一段时间,我再次遇到同样的问题,不得不切换浏览器.

从Chrome开始,它以相反的方式工作,所以我认为它与特定的webbrowser没有任何关系.对我来说,似乎首先打开“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”的影响,因为添加的时间字符串将不同,并且缓存中不会有副本.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...