我正在编写一个简单的在线留言板,人们可以在其中张贴消息。我希望人们可以在不刷新页面的情况下看到新消息,所以我正在使用jquery对包含消息的文本文件执行$ .ajax()。非常奇怪的是,有时ajax无法正常工作。即使message.txt已更新,但在ajax中从其中读取的数据仍然很旧。
我观察到,在服务器上修改代码后,它将停止正常工作。清除所有浏览器历史记录也会使其暂时停止正常工作。我不知道是什么原因造成的。
这是我的php文件中的代码
LatLng
这是JavaScript
#!/usr/local/bin/php
<?php
ob_start();
session_name('message_board');
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<?php
if (!isset($_SESSION['loggedin']) or !$_SESSION['loggedin']) {
header('Location: index.php');
}
else {
?>
<?php
if (isset($_POST['message'])) {
$file = fopen('message.txt', 'a') or die('Can not open file');
date_default_timezone_set('America/Los_Angeles');
$date_time = new DateTime();
fwrite($file, $_POST['message'].'@~,'.$_SESSION['username'].'@~,'.$date_time->format('Y-m-d H:i:s').'@~;');
fclose($file);
}
?>
<head>
<meta charset="UTF-8">
<title>Message Board</title>
<link rel="stylesheet" type="text/css" href="msg_board.css">
<script src="https://code.jquery.com/jquery-latest.min.js" defer></script>
<script src="msg_board.js" defer></script>
</head>
<body>
<h1 id="msg_board_title">
Awesome Message board
</h1>
<form action="logout.php">
<p id="welcome_message">
Welcome to the Message Board! Your email address is <?php echo $_SESSION['username'] ?>
<input type="submit" value="log out">
</p>
</form>
<section id="all_messages">
</section>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<fieldset>
<p>
<textarea rows="8" name="message" id="posting_area" required></textarea>
</p>
</fieldset>
<fieldset>
<input type="submit" value="Post">
</fieldset>
</form>
</body>
<?php } ?>
</html>
来自message.txt的示例
$.ajax({
url: "message.txt",
dataType: "text",
success: function(data) {
let large_text = "";
if (data !== "") {
let msg_blocks = data.split("@~;");
for (let i = 0; i < msg_blocks.length - 1; ++i) {
temp = "<p>";
temp += msg_blocks[i].split("@~,")[0];
temp += "<br>";
temp += msg_blocks[i].split("@~,")[1];
temp += "<br>";
temp += msg_blocks[i].split("@~,")[2];
temp += "</p>";
large_text = temp + large_text;
}
}
else {
large_text = "<p>Post something! There hasn't been any messages yet!</p>";
}
$("#all_messages").html(large_text);
}
});
清除我的浏览器历史记录或更改服务器上与此相关的任何文件后,它不仅会立即停止工作,而且还不能满足我使用AJAX的一个原因。我希望它可以显示其他用户在他们的计算机上发布的新消息,而无需我刷新,但这也不会发生。我认为我对php POST和javascript AJAX的使用非常标准。我已经度过了整个下午,从字面上感到恶心。请帮忙!
请澄清一下:由于AJAX不能正常工作,我的意思是即使我检查了文本文件确实已被php更新,它也不会更新对网页的更改。没有错误报告任何地方。