Я пишу простую онлайн доску объявлений, где люди могут публиковать сообщения.Я надеюсь, что люди смогут видеть новые сообщения без обновления страницы, поэтому я использую jquery для выполнения $ .ajax () для текстового файла, содержащего сообщения.Что очень странно, иногда Ajax не работает.Несмотря на то, что message.txt был обновлен, данные, считанные с него в ajax, все еще старые.
Я заметил, что после внесения изменений в мой код на сервере он перестанет работать правильно.И очистка всей истории браузера также на некоторое время перестает работать правильно.Я понятия не имею, что является причиной проблемы.
Это код в моем php-файле
#!/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>
Это javascript
$.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);
}
});
Пример сообщения.txt
Hi@~,hello@test.com@~,2019-06-04 17:58:35@~;
Мало того, что он перестанет работать сразу после очистки истории браузера или изменения любого файла, связанного с этим на моем сервере, он также не будет выполнять одну из причин, по которой я использую AJAX.Я надеюсь, что он покажет новые сообщения, которые другие пользователи публикуют на своих компьютерах, и мне не придется обновляться, но этого тоже не происходит.Я думаю, что мое использование php POST и JavaScript AJAX очень стандартно.Я уже провел весь день и чувствую тошноту буквально.Пожалуйста, помогите!
Просто чтобы уточнить: AJAX не работает должным образом, я имею в виду, что он не обновляет изменения на веб-странице, хотя я проверял, что текстовый файл действительно был обновлен php.Об ошибках нигде не сообщалось.