我正在创建一个网络聊天应用程序,我有一个问题 - 我想发送一条消息来自用户并将其添加到数据库,但我不想重新加载我的页面,我做了类似的事情,但它不起作用:
文件index.php:
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
setInterval(function () {
$("#chat-content").load('chat.php');
},10);
$("#submit").click(function(){
var clientmsg = $("#message").val();
$.post("chat.php", {text: clientmsg});
$("#message").attr("value", "");
return false;
});
</script>
</head>
<body>
<div id="chat-content">
</div>
</body>
<form method="post" id="messageform">
<input type="text" id="message" name="message"></input>
<input id="submit" name="sumbit" type="submit" value="Send" />
</form>
文件chat.php:
<?php include('db.php');
$query = "SELECT * FROM `czat`;";
$result = $con->prepare($query);
$result->execute();
$count = $result->fetchColumn();
if($count > 100){
$query = "TRUNCATE `czat`;";
$result = $con->prepare($query);
$result->execute();
}
$query = "SELECT * FROM `czat` ORDER BY id ASC LIMIT 10;";
$result = $con->prepare($query);
$result->execute();
while($row = $result->fetch()){
echo $row["nazwa"].' - '.$row["tresc"].'<br>';
}
if(isset($_POST['text'])){
$text = $_POST['text'];
$query = "INSERT INTO `czat` (`id`, `nazwa`, `tresc`) VALUES (NULL, 'dd', '$text');";
$result = $con->prepare($query);
$result->execute();
}
?>
db.php是db的标准连接。
答案 0 :(得分:0)
您必须使用ajax。 Ajax提供异步数据通信。
例如,您可以将数据(POST或GET)从客户端发送到服务器端。您使用来自服务器端客户端的数据,并将结果返回给客户端。 (结果可以是html或json。这个决定可以根据你的选择而改变。)
这是一个示例ajax脚本。
var messageText = $("#message").val();
messageText = messageText.trim();
$.ajax({
url : "chat.php",
type: "POST",
data : {text : messageText} ,
success: function(data, textStatus, jqXHR) {
console.log(data);// You can see the result which is created in chat.php
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(textStatus);// if there is an error
}
});
答案 1 :(得分:0)
因为您的提交按钮位于表单中,所以按钮的默认操作是对“操作”的POST。在表单元素中定义的属性(在这种情况下,未在表单中定义,它将POST到当前页面)。
您需要为您的javascript
预防默认()$("#submit").click(function(event){
event.preventDefault();
var clientmsg = $("#message").val();
$.post("chat.php", {text: clientmsg});
$("#message").attr("value", "");
return false;
});
答案 2 :(得分:0)
帖子成功吗?(状态200好吗?)你试过吗
echo $text;
定义$ text后?你有价值吗?来吧,不要只做一件事,然后回来寻求帮助,解决问题,并试着找出错误!