【问题标题】:Why is chat content not loading?为什么聊天内容没有加载?
【发布时间】:2013-01-24 16:57:11
【问题描述】:

我想做一个 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(通过发送帖子值的表单),它会加载所有消息。所以这很令人困惑..

编辑:要添加 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);
?>

【问题讨论】:

  • 首先,你的聊天框是一个div?它如何从用户那里获得任何消息?其次,您要实现的总体目标是什么?
  • "$(".chatbox").html(data);"这就是我试图从 response.php 加载数据的方式
  • 好的,它正在“加载所有”消息,即使用户名不等于$row["to"]$row["sender"]
  • getbyUser 是做什么的?
  • $row["to"] 和 $row["sender"] 仅适用于 PM。 getbyUser 从数据库中读取用户属性。

标签: php jquery html chat


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您的$.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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多