2012-08-08 52 views
0

我都忍了一些代碼來進行AJAX,PHP,實時聊天的MySQL ... 這是我的代碼:檢查是否有與阿賈克斯新消息

-jQuery /阿賈克斯

$(function(){ 
    setInterval(function() { 
    $('#chMsgCont').load('./ajax/msg.php'); 
     var div = $('#chMsgCont'); 
     var o = div.offset().top; 

    div.scrollTop(o + 12302012); 
    } 
    ,1000); 
}); 

「./ajax/msg.php」

<?php 
include("../system/config.site.php"); 
$query = mysql_query("SELECT * FROM chat_msg ORDER BY timestamp ASC"); 
while($p = mysql_fetch_assoc($query)) { 
    $auth = mysql_fetch_assoc(mysql_query("SELECT * FROM chat_users WHERE id = '".$p['auth_id']."'")); 
?> 
<div class="chatMsg"> 
<p id="chatPMsg"> 
<span class="chatTime"><?php echo date("H:i", $p['timestamp']); ?></span> 
<b><?php echo $auth['name']." ".$auth['surname']; ?></b><br /> 
<?php echo stripslashes($p['msg']); ?> 
</p> 
<p id="chatImg"> 
<img src="./images/thumb<?php echo $p['auth_id']; ?>.png" /> 
</p> 
<div style="clear:both;"><!– –> </div> 
</div> 
<?php 
} 
?> 

我還沒有發現任何方法不加載每一秒‘msg.php’文件...我想:是不是可以首先加載消息,然後用setIntervall檢查新消息以追加到#chMsgCont?我認爲這是可能的,但我不知道如何編碼:/,任何人都可以幫助我嗎?

回答

0

是的,它可以加載初始頁面加載時的所有消息;然後使用新郵件更新聊天窗口(您是否曾經想知道Gmail如何在不刷新頁面的情況下自動將新郵件填入收件箱?許多AJAX請求)。

你在正確的軌道上。只要確保你的MySQL數據庫中有一列包含是否是新消息的「是/否」值。然後,每次使用ajax/msg.php獲取新消息時,除了獲取和輸出內容之外,還要執行SQL更新以更新獲取的數據。

一旦你有了這個工作,你可以通過創建簡單的MySQL SELECT語句來進一步優化你的聊天應用程序,該語句簡單地檢查「新」行(SELECT COUNT(new_message)FROM消息)的計數。然後在嘗試附加內容之前檢查返回的值以及是否大於0。我還會檢查JavaScript中的空返回數據,以防止不必要地操縱DOM元素。

+0

非常感謝你!有用的答案;)。 – Denn 2012-08-08 01:13:30