【发布时间】: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