出于某种原因,我的聊天系统没有发送消息&我无法找到我做错的事。我有聊天的房间'在我的php网页上制作,但邮件不会发送。
当我删除我的数据库密码时,我在页面上出现错误,所以我知道它已经中途工作了。我也知道我在表单上有一个#
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Blog - Chat</title>
<link rel="stylesheet" href="http://localhost/blog/CSS3/chat.css" type="text/css">
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="C:\\xampp\htdocs\blog\Chat\Javascript\chat.js"></script>
</head>
<body>
<h3> Welcome <?php print $_SESSION['user_id']; ?>! </h3>
<div class="chat">
<div class="chat-status">Status: <span>Idle</span></div>
<div class="chat-messages"></div>
<textarea class="chat-textarea" placeholder="Type your message"></textarea>
<form action="#" onSubmit ='return false;' id="chatForm">
<input type="hidden" id="username" value="<?php echo $_SESSION['user_id']; ?>"/>
<input type="submit" id="sbutton" name="submit" value="Send"/>
</div>
</body>
</html>
sendchat.php
$con = new PDO('mysql:host=127.0.0.1;dbname=chat','root','');
if(isset($_POST['text']) && isset($_POST['username']))
{
$text= strip_tags(stripslashes($_POST['text']));
$username= strip_tags(stripslashes($_POST['username']));
if(!empty($text) && !empty($username))
{
$insert = $con->prepare("INSERT INTO messages VALUES('','".$username."','".$text."')");
$insert->execute();
echo "<li class='cm'><b>".ucwords($username)."</b> - ".$text."</li>";
}
}
这是我的js文件
$(function(){
$(document).on('submit','#chatForm',function(){
var text = $.trim($("#text").val());
var username = $.trim($("#username").val());
if(text != "" && username != ""){
$.post('sendchat.php',{text: text, username: username},function(data){
$(".chat-messages").append(data);
});
}else{
alert("Data missing");
}
});
function getMessages(){
$.get('getmessages.php',function(data){
$(".chat-messages").php(data);
});
}
setInterval(function(){
getMessages();
},500); });
getmessages.php
$con = new PDO('mysql:host=127.0.0.1;dbname=chat','root','');
$query = $con->prepare("SELECT * FROM messages");
$query->execute();
//Fetch
while($fetch = $query->fetch(PDO::FETCH_ASSOC))
{
$username = $fetch['username'];
$message = $fetch['message'];
echo "<li class='cm'><b>".ucwords($username)."</b> - ".$message."</li>";
}
答案 0 :(得分:1)
您的JavaScript正在倾听要提交的表单:
false
但是在表单中,您提交后会立即返回<form action="#" onSubmit ='return false;' id="chatForm">
,因此您的JavaScript不会被触发。
$(this).preventDefault();
您需要从表单中删除onSubmit代码并将其添加到JavaScript:
$(document).on('submit','#chatForm',function(){
$(this).preventDefault();
var text = $.trim($("#text").val());
var username = $.trim($("#username").val());
if(text != "" && username != ""){
$.post('sendchat.php',{text: text, username: username},function(data){
$(".chat-messages").append(data);
});
} else {
alert("Data missing");
}
return false;
});
然后在函数结束时返回false。你的整个功能应如下所示:
{{1}}
答案 1 :(得分:0)
在使用PDO库时,需要将insert语句设置如下:
$(document).on('submit','#chatForm',function(){