PHP Ajax仅加载新内容

时间:2015-10-30 19:43:36

标签: javascript php jquery ajax chat

我正在进行一个简单的聊天,它已经正常工作,但效率不高。 每当我运行我的脚本时,它会刷新整个聊天并一遍又一遍地加载内容。

我试图找到一种方法,即脚本只从我的聊天数据库加载新内容,旧邮件不应该一遍又一遍地加载。

这是我的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">&#428;&#968;&#428; &#9762; <?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">&#428;&#968;&#428; &#9762; <?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>

我希望有人可以帮助我,我已经找了很长时间了,我找不到能解决我问题的任何东西! 谢谢:))

2 个答案:

答案 0 :(得分:1)

2解决方案。

  1. 当然,您需要一种方法将您的消息标记为已读取。

  2. 您可以忽略它,只回读最后的X条消息。

答案 1 :(得分:0)

    在聊天表中
  1. ,您必须添加&#39;未读&#39;字段或其他东西,以识别消息状态(已读/未读),与@geggleto解决方案

  2. 相同
  3. 将查询过滤器添加到以下内容:

    $abfrage = "SELECT * FROM chat WHERE timestamp between '$from' AND '$to' ";

  4. 确保您有一个按时间限制消息的角色