PHP / Js聊天系统

时间:2015-04-23 10:19:28

标签: javascript php

出于某种原因,我的聊天系统没有发送消息&我无法找到我做错的事。我有聊天的房间'在我的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>";
}

2 个答案:

答案 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(){