简单的php ajax聊天

时间:2013-10-24 11:15:14

标签: php json jquery fwrite fread

我正在尝试做一个简单的php聊天应用程序,它通过ajax从客户端接收数据,并将该数据写入文本文件进行存储。但是我在解析json后尝试获取'name'和'message'的行上不断得到一个未定义的索引错误。

这是chat.php文件:

<?php
    if (isset($_POST['data']))
    {        
        $data = $_POST['data'];
        $chat = json_decode($data);
        $name = $chat->name;
        $msg = $chat->msg;

        $file = "chat.txt";
        $fh = fopen($file, 'w') or die("Sorry, could not open the file.");

        if (fwrite($fh, $name + ":" + $msg))
        {
            $response = json_encode(array('exists' => true));
        } else {
            $response = json_encode(array('exists' => false));
        }
        fclose($fh);
        echo "<script type='text/javascript'>alert ('" + $name + $msg + "')</script>"
    }
?>

这是javascript:

<script type="text/javascript">
            $(document).ready(function() {
                $("#btnPost").click(function() {
                    var msg = $("#chat-input").val();
                    if (msg.length == 0)
                    {
                        alert ("Enter a message first!");
                        return;
                    }
                    var name = $("#name-input").val();
                    var chat = $(".chat-box").html();
                    $(".chat-box").html(chat + "<br /><div class='bubble'>" + msg + "</div>");

                    var data = {
                        Name : name,
                        Message : msg
                    };
                    $.ajax({
                        type: "POST",
                        url: "chat.php",
                        data: {
                            data: JSON.stringify(data)
                        },
                        dataType: "json",
                        success: function(response) {
                            // display chat data stored in text file 
                        }
                    });
                });
            });
        </script>

1 个答案:

答案 0 :(得分:3)

可能是你的$ chat变量

$chat = json_decode($data);

不包含这些字段,但在此处显示名称和消息:

var data = {
  Name : name,
  Message : msg
}

name和msg是valuse,字段名称是Name和Message。

请尝试print_r($ chat)查看它包含的内容。