为什么聊天内容没有加载?

时间:2013-01-24 16:57:11

标签: php jquery html chat

我想进行jQuery聊天,我无法将聊天内容加载到聊天框中。 加载脚本(我使用会话登录,所以我需要将用户名转移到JS)

<?php 
    include "protect/1.php";
    print "<script type=\"text/javascript\">var name = '".$_SESSION['username']."'; </script>";
?>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){ chat_update(name) });
    setInterval("chat_update("+name+")",1000);
    function chat_update(user) {
        $.post("response.php",{ username:user },function(data){
            $(".chatbox").html(data);
    }
</script>

而div:

<div class="chatbox"></div>

如果我打开response.php(通过发送post值的表单),它会加载所有消息。所以这很令人困惑......

编辑:要添加response.php,也许问题就在那里,但我不这么认为..

<?php
include "functions.php";
include "sql.php";
$iQuery = mysql_query("SELECT * FROM chat ORDER BY id ASC");
while($row = mysql_fetch_array($iQuery)) {
    if($row["to"] != null) {
        if($_POST["username"] == $row["to"] || $_POST["username"] == $row["sender"])
            echo "<span class=\"text\">".$row["date"]." | ".$row["sender"].": ".$row["message"]."</span><br>\n";
    }
    switch(getbyUser($_POST["username"],"level")) {
        case 1: echo "<span class=\"text\">".$row["date"]." | ".$row["sender"].": ".$row["message"]."</span><br>\n"; break;
        case 2: echo "<span class=\"text\">".$row["date"]." | ".$row["sender"].": ".$row["message"]."</span><a href=\"?page=admin/delmsg&msg=".$row["id"]."\"><img src=\"res/del.png\"></a><br>\n"; break;
        case 3:
        case 4: echo "<span class=\"text\">".$row["date"]." | ".$row["sender"].": ".$row["message"]."</span><a href=\"?page=admin/delmsg&msg=".$row["id"]."\"><img src=\"res/del.png\"></a><a href=\"?page=admin/editmsg&msg=".$row["id"]."\"><img src=\"res/edit.png\"></a><br>\n"; break;
    }
}
mysql_free_result($iQuery);
?>

2 个答案:

答案 0 :(得分:2)

假设您的实时jquery代码是$ .post请求无效,这就是为什么它不返回任何数据。

你没有关闭功能(数据)部分,所以它应该是

function chat_update(user) {
    $.post("response.php",{ username:user },function(data){
            $(".chatbox").html(data);
    });
}

答案 1 :(得分:1)

您的$.post电话中存在语法错误,请更改为:

function chat_update(user) {
    $.post("response.php",{ username:user },function(data){
        $(".chatbox").html(data);
    }); // <-- this was missing
}

第二个问题在这里:

setInterval("chat_update("+name+")",1000);

通过name传递一个不带引号的字符串,例如:

chat_update(John) // <-- the string doesn't have quotes

快速解决方法是添加单引号,但您需要确保用户名本身不能包含引号。

setInterval("chat_update('"+name+"')",1000);