我想进行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);
?>
答案 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);