AJAX在提交数据时加载奇怪的错误

时间:2018-07-14 08:43:26

标签: php ajax

Am使用以下代码创建聊天系统并将数据存储到txt文件中。它可以满足我的需要,但是在提交数据时会出现一个小错误,当我键入文本并按Enter键时,AJAX将从文件chatdata.txt加载数据一秒钟,

Index.html

<?php
session_start();
//Create a session of username and logging in the user to the chat room
if (filter_input(INPUT_POST, 'username')) {
    $_SESSION['username'] = filter_input(INPUT_POST, 'username');
}
//Unset session and logging out user from the chat room
if (isset($_GET['logout'])) {
    unset($_SESSION['username']);
    header('Location:index.php');
}
?>
<html>
    <head>
        <title>Simple Chat Room</title>
        <link href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,400,300' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="css/style.css" />
        <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    </head>
    <body>
        <div class='header'>
            <h1>
                SIMPLE CHAT ROOM
                <?php // Adding the logout link only for logged in users   ?>
                <?php if (isset($_SESSION['username'])) { ?>
                    <a class='logout' href="?logout">Logout</a>
                <?php } ?>
            </h1>

        </div>

        <div class='main'>
            <?php //Check if the user is logged in or not  ?>
            <?php if (isset($_SESSION['username'])) { ?>
                <div id='result'></div>
                <div class='chatcontrols'>
                    <form method="post" onsubmit="return submitchat();">
                        <input type='text' name='chat' id='chatbox' autocomplete="off" placeholder="ENTER CHAT HERE" />
                        <input type='submit' name='send' id='send' class='btn btn-send' value='Send' />
                        <input type='button' name='clear' class='btn btn-clear' id='clear' value='X' title="Clear Chat" />
                    </form>
                    <script>
                    // Javascript function to submit new chat entered by user
                        function submitchat() {
                            if ($('#chat').val() == '' || $('#chatbox').val() == ' ')
                                return false;
                            $.ajax({
                                url: 'chat.php',
                                data: {chat: $('#chatbox').val(), ajaxsend: true},
                                method: 'post',
                                success: function (data) {
                                    $('#result').html(data); // Get the chat records and add it to result div
                                    $('#chatbox').val(''); //Clear chat box after successful submition
                                    document.getElementById('result').scrollTop = document.getElementById('result').scrollHeight; // Bring the scrollbar to bottom of the chat resultbox in case of long chatbox
                                }
                            })
                            return false;
                        };
                    // Function to continously check the some has submitted any new chat
                        setInterval(function () {
                            $.ajax({
                                url: 'chat.php',
                                data: {ajaxget: true},
                                method: 'post',
                                success: function (data) {
                                    $('#result').html(data);
                                }
                            })
                        }, 1000);
                    // Function to chat history
                        $(document).ready(function () {
                            $('#clear').click(function () {
                                if (!confirm('Are you sure you want to clear chat?'))
                                    return false;
                                $.ajax({
                                    url: 'chat.php',
                                    data: {username: "<?php echo $_SESSION['username'] ?>", ajaxclear: true},
                                    method: 'post',
                                    success: function (data) {
                                        $('#result').html(data);
                                    }
                                })
                            })
                        })
                    </script>
                <?php } else { ?>
                    <div class='userscreen'>
                        <form method="post">
                            <input type='text' class='input-user' placeholder="ENTER YOUR NAME HERE" name='username' />
                            <input type='submit' class='btn btn-user' value='START CHAT' />
                        </form>
                    </div>
                <?php } ?>
                </div>
            </div>
    </body>
</html>

Chat.php

<?php
session_start();
$filename=$_SESSION['username'];
$nametxt= "$filename.txt";
$message='created successfully';

if (file_exists($nametxt)) {
  $fh = fopen($nametxt, 'a');
} else {
  $fh = fopen($nametxt, 'w');
  fwrite($fh, $message."\n");
}
fclose($fh);

if(filter_input(INPUT_POST, 'ajaxsend') && filter_input(INPUT_POST, 'ajaxsend')==true){
    // Code to save and send chat
    $chat = fopen($nametxt, "a");
    $data="<b>".$_SESSION['username'].':</b> '.filter_input(INPUT_POST, 'chat')."<br>";
    fwrite($chat,$data);
    fclose($chat);

    $chat = fopen("chatdata.txt", "r");
    echo fread($chat,filesize("$nametxt"));
    fclose($chat);
} else if(filter_input(INPUT_POST, 'ajaxget') && filter_input(INPUT_POST, 'ajaxget')==true){
    // Code to send chat history to the user
    $chat = fopen($nametxt, "r");
    echo fread($chat,filesize("$nametxt"));
    fclose($chat);
} else if(filter_input(INPUT_POST, 'ajaxclear') && filter_input(INPUT_POST, 'ajaxclear')==true){
    // Code to clear chat history
    $chat = fopen($nametxt, "w");
    $data="<b>".$_SESSION['username'].'</b> cleared chat<br>';
    fwrite($chat,$data);
    fclose($chat);
}

有人可以帮我排序错误,为什么AJAX在提交数据时从chatdata.txt加载数据。

1 个答案:

答案 0 :(得分:1)

如果您使用index.html而不是index.php,将无法正常工作!

然后,您可能忘记了将第22行的"chatdata.txt"更改为$nametxt

我尝试了更改,并成功了!