Чтение данных из текстового файла с использованием AJAX не работает должным образом - PullRequest
0 голосов
/ 05 июня 2019

Я пишу простую онлайн доску объявлений, где люди могут публиковать сообщения.Я надеюсь, что люди смогут видеть новые сообщения без обновления страницы, поэтому я использую 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.Об ошибках нигде не сообщалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...