【问题标题】:Webbrowser is not showing the updated version of a txt file but opening a new browser shows correct fileWebbrowser 未显示 txt 文件的更新版本,但打开新浏览器显示正确的文件
【发布时间】:2015-06-04 20:54:13
【问题描述】:

我正在尝试使用 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 开始,所以我认为它与特定的网络浏览器没有任何关系。对我来说,第一次打开“text.txt”的浏览器似乎保存了一个副本,并且只使用那个副本,我不知道如何解决它。

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

【问题讨论】:

  • 它被缓存了,你可以像storydoc.txt?v=1一样向它添加一个GET字符串,它应该可以正确加载
  • @cmorrissey 哈哈,我就知道会这么简单。非常感谢,不胜感激:)

标签: javascript php jquery ajax


【解决方案1】:

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

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

添加的字符串与实际文件无关,但会产生每次“新”请求的影响,因为添加的时间字符串会有所不同,缓存中不会有副本。

【讨论】:

  • 你大王,山姆 ;-)
  • 只是王子和拉尔夫国王交谈 ;-) @Fred-ii-
猜你喜欢
  • 1970-01-01
  • 2013-08-25
  • 2013-10-31
  • 2019-01-29
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多