我的聊天时间每0.1秒自动刷新一次,但有时需要永久刷新甚至首先加载。
代码:
我在html文档的htdocs之前有我的Body OnLoad脚本。
<body onload="chat_load()">
这是我的java脚本。
<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script type='text/javascript'>
var updateTime = 1;
var running = false;
var counter = 0;
function chat_update(){
if(counter = updateTime)
chat_load();
else
counter ++;
if (running == true)
setTimeout("chat_update", 100);
}
function chat_load(){
$.post('chat_submit.php', {stage:"load"}, function(data){
$('#chatbox #primary #window').html( data );
counter = 0;
setTimeout("chat_load();", 100*updateTime);
});
}
function chat_send(){
var text = document.getElementById("chat_text").value;
document.getElementById("chat_text").value = '';
$.post('chat_submit.php', {stage:"send", text:text}, function(data){
if(data == "good")
chat_load();
else
alert("Please enter a message.");
});
}
</script>
chat_submit.php
if($stage == "load"){
$query = mysql_query("SELECT * FROM chat_chats ORDER BY time DESC");
if(mysql_num_rows($query) >0){
while($row = mysql_fetch_assoc($query)){
$user1 = $row['user'];
$date = $row['time'];
$content = $row['text'];
if($user == $user1){
$num = 2;
}else{
$num = 1;
}
echo '<div class="list'.$num.'">';
echo '<b>'.$user1.'</b> <font color="red"><i>'.$date.'</i></font> <br> '.$content;
echo "</div>";
}
}
else
echo "No messages found be the first.";
}
**
我遇到的问题是有时它不会刷新甚至加载 在第一页加载。有谁知道为什么?我还是喜欢它 自动刷新相当快,但现在它似乎滞后并失败相当 许多。代码中是否有任何错误或是否有更好的功能I. 可以用?
**
感谢。
答案 0 :(得分:1)
您应该将您的Javascript代码包装在
中$(function() {
// code here
});
这是$(document).ready()的jQuery简写。我会删除<body onload="chat_load()">
并在Javascript末尾调用chat_load()
。
答案 1 :(得分:1)
ajax拉动刷新的最初0.1秒间隔肯定太小了。
我会把它增加到几秒钟。
并添加最后一条消息的标记,这样您就可以只提取最新的按摩并将它们添加到您的聊天消息中,这样您就不必在每次请求时发送所有消息,只需从最后一次请求中获取新消息。这应该可以降低mysql负载并加快数据发送速度。