1

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

这是 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>
4

1 回答 1

3

可能是你的 $chat 变量

$chat = json_decode($data);

不包含这些字段,但包含您在此处定义的名称和消息:

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

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

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

于 2013-10-24T11:34:24.427 回答