我正在尝试做一个简单的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>
答案 0 :(得分:3)
可能是你的$ chat变量
$chat = json_decode($data);
不包含这些字段,但在此处显示名称和消息:
var data = {
Name : name,
Message : msg
}
name和msg是valuse,字段名称是Name和Message。
请尝试print_r($ chat)查看它包含的内容。