使用AJAX从文本文件读取数据无法正常工作

时间:2019-06-05 01:38:00

标签: javascript php ajax

我正在编写一个简单的在线留言板,人们可以在其中张贴消息。我希望人们可以在不刷新页面的情况下看到新消息,所以我正在使用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更新,它也不会更新对网页的更改。没有错误报告任何地方。

0 个答案:

没有答案