我使用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”,因为它之前已经加载过了。我只想加载尚未加载的新邮件。我怎么能这样做?
我很抱歉我的英语不好,英语不是我的母语。
答案 0 :(得分:2)
您可以发送上次查看的邮件或ID的时间戳。 使用json重写您的查询。
答案 1 :(得分:1)
您可以向表中添加另一列,指定(通过布尔值)消息是否已显示。例如,当第二个PHP文件发出获取消息的请求时,它可以将该列设置为刚刚发送到客户端的每列的1(其中1 =显示),并忽略已设置为1的每个列。
详细说明,您可能会有一个这样的查询,它会更新数据库中满足所有条件的行(以确保它显示在正确的客户端上)。之后,您可以获取所有受影响的行,然后在页面上返回它们(然后通过Javascript检索并显示给客户端)。
UPDATE `table` SET `displayed` = 1 WHERE /* search terms here */
重要的是让所有受影响的人,最好使用PDO
或mysqli
。
答案 2 :(得分:1)
您也可以将limit 0,1
放入当前查询