0

我已经使用 jQuery、PHP/MySQL 开发了一个像“omegle.com”这样的随机聊天系统,但我想改进这个网站。在当前阶段,它向 PHP 文件发送请求以显示新消息。jQuery代码如下

function load_msg(){

   $.ajax({
        url: 'show_msg.php',
        success: function(result){
            $("#wait").css("display","none");  
            $("#chat_canvas").html(result);
        }
    });

}

setInterval("load_msg()",3000);

但它显示所有消息,我希望能够只显示新消息。但我无法理解如何做到这一点。

我举个例子,

假设我在文本区域中写了“Hello xyz”。它会将消息“Hello xyz”发送到一个 php 文件,该 php 文件会将其存储在数据库中。接下来,通过向 php 文件发送请求来显示此消息并返回结果。结果,它显示“Hello xyz”。还行吧。但是如果我发送“你好吗?”,那么它将同时加载“你好 xyz”和“你好吗?”。我不想再次加载“Hello xyz”,因为它之前已经加载过了。我只想加载尚未加载的新消息。我怎样才能做到这一点???

我很抱歉我的英语不好,英语不是我的母语。

4

3 回答 3

2

您可以发送上次查看的消息或 ID 的时间戳。使用 json 重写您的查询。

于 2012-11-11T18:33:40.993 回答
1

您可以向表中添加另一列,以指定(通过布尔值)消息是否已显示。例如,当第二个 PHP 文件发出获取消息的请求时,它可以为它刚刚发送到客户端的每一列将该列设置为 1(其中 1 = 显示),并忽略已经设置为 1 的每一列。

详细地说,您可能有一个这样的查询,它会更新数据库中满足所有术语的那一行(以确保它被显示给正确的客户端)。之后,您可以获得所有受影响的行,然后在页面上返回它们(然后由 Javascript 检索并显示给客户端)。

UPDATE `table` SET `displayed` = 1 WHERE /* search terms here */

重要的部分是让所有受影响的人,最好使用PDOor mysqli

于 2012-11-11T18:28:49.453 回答
1

您也可以 limit 0,1输入您当前的查询

于 2012-11-11T18:36:52.987 回答