【发布时间】:2016-01-31 08:06:19
【问题描述】:
我现在正在做一个简单的聊天,它已经在工作,但效率不高。 每当我运行我的脚本时,它都会刷新整个聊天并一遍又一遍地加载内容。
我正在尝试找到一种方法,让脚本只从我的聊天数据库中加载新内容,而不应一遍又一遍地加载旧消息。
这是我的 index.php 中的部分:
<div id="chat" class="full rund">
<table border="1" class="full chattable">
<?php
$abfrage = "SELECT * FROM chat";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {?>
<tr class="chattr">
<td style="width:200px;"><h3 class="text">ƬψƬ ☢ <?php echo $row->name;?>:</h3></td>
<td style="width:440px;"><p><h3 class="text"><?php echo $row->text;?></h3></p></td>
<td style="width:160px;"><h3 class="text"><?php echo $row->timestamp;?></h3></td>
</tr>
<?php
}
?>
</table>
</div>
这是我的 chat.js:
setInterval( "updateShouts()", 1000 );
function fx(form,target){
var _target=target;
var url=form.action;
var data=$(form)[(form.method.match(/^post$/i))?'serializeArray':'serialize']();
$(_target).load(url,data,function(){setTimeout(function(){
$(_target).empty();
},0);});
return false;}
function updateShouts(){
$('#chat').load('php/latestMsg.php');
}
我的 latestMsg.php(与索引相同):
<div id="chat" class="full rund">
<table border="1" class="full chattable">
<?php
$abfrage = "SELECT * FROM chat";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {?>
<tr class="chattr">
<td style="width:200px;"><h3 class="text">ƬψƬ ☢ <?php echo $row->name;?>:</h3></td>
<td style="width:440px;"><p><h3 class="text"><?php echo $row->text;?></h3></p></td>
<td style="width:160px;"><h3 class="text"><?php echo $row->timestamp;?></h3></td>
</tr>
<?php
}
?>
</table>
</div>
我希望任何人都可以帮助我,我已经搜索了很长时间,但我找不到任何可以解决我的问题的东西! 谢谢:)
【问题讨论】:
-
我可能会在服务器上的会话中跟踪哪些消息已经发送给用户。带有时间戳或最后发送消息的 ID。
-
他可能想要查看的是 web-sockets...那么您根本不必更新页面。
标签: javascript php jquery ajax chat