Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用ajax检查是否有新消息_Php_Jquery_Ajax - Fatal编程技术网

Php 使用ajax检查是否有新消息

Php 使用ajax检查是否有新消息,php,jquery,ajax,Php,Jquery,Ajax,我已经提供了一些代码,使一个ajax,php,mysql实时聊天。。。 这是我的代码: -jQuery/Ajax $(function(){ setInterval(function() { $('#chMsgCont').load('./ajax/msg.php'); var div = $('#chMsgCont'); var o = div.offset().top; div.scrollTop( o + 12302012 );

我已经提供了一些代码,使一个ajax,php,mysql实时聊天。。。 这是我的代码:

-jQuery/Ajax

$(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的新消息?我认为这是可能的,但我不知道如何编码:/,有人能帮我吗?

是的,可以在初始页面加载时加载所有消息;然后用新消息更新聊天窗口。你有没有想过Gmail如何在不刷新页面的情况下自动将新邮件填充到你的收件箱?大量AJAX请求

你在正确的轨道上。只需确保MySQL数据库中有一列,其中包含一个yes/no值,用于判断是否是新消息。然后,每次使用ajax/msg.php获取新消息时,除了获取和输出内容外,还要执行SQL更新以更新获取的数据


一旦您完成了这项工作,您就可以通过创建一个更简单的MySQL SELECT语句来进一步优化聊天应用程序,该语句只需检查新行数SELECT COUNTnew_messages FROM messages。然后在尝试追加内容之前,检查返回的值是否大于0。我还将检查JavaScript中的空返回数据,以防止不必要地操纵DOM元素。

是的,可以在初始页面加载时加载所有消息;然后用新消息更新聊天窗口。你有没有想过Gmail如何在不刷新页面的情况下自动将新邮件填充到你的收件箱?大量AJAX请求

你在正确的轨道上。只需确保MySQL数据库中有一列,其中包含一个yes/no值,用于判断是否是新消息。然后,每次使用ajax/msg.php获取新消息时,除了获取和输出内容外,还要执行SQL更新以更新获取的数据


一旦您完成了这项工作,您就可以通过创建一个更简单的MySQL SELECT语句来进一步优化聊天应用程序,该语句只需检查新行数SELECT COUNTnew_messages FROM messages。然后在尝试追加内容之前,检查返回的值是否大于0。我还要检查JavaScript中是否有空返回数据,以防止不必要地操纵DOM元素。

非常感谢!有益的回答;。非常感谢!有益的回答;。