Javascript 每次在DB(MySQL)中插入新消息时刷新chat

Javascript 每次在DB(MySQL)中插入新消息时刷新chat,javascript,php,Javascript,Php,我一直在网上搜索一个代码,每当收到来自其他聊天用户的新消息时,该代码就会刷新聊天记录。我读过关于setTimeout和setInterval的文章,但是我需要更多有经验的开发人员的建议和帮助 最好的例子就是这个网站。除非刷新浏览器,否则不会立即看到通知。我想最好的例子就是facebook。无论何时更新数据库,都会立即弹出通知,而不会刷新浏览器 这是我的密码 $check_sql = ("SELECT time from messages where conversation_id = '".$c

我一直在网上搜索一个代码,每当收到来自其他聊天用户的新消息时,该代码就会刷新聊天记录。我读过关于setTimeout和setInterval的文章,但是我需要更多有经验的开发人员的建议和帮助

最好的例子就是这个网站。除非刷新浏览器,否则不会立即看到通知。我想最好的例子就是facebook。无论何时更新数据库,都会立即弹出通知,而不会刷新浏览器

这是我的密码

$check_sql = ("SELECT time from messages where conversation_id = '".$con_id."' ");
$check_query = mysqli_query($con, $check_sql) or die ("ERROR checking:".mysqli_error($con);
while($row = mysqli_fetch_assoc($check_query){
  $current_time = date_default_timezone_get();
  $message_time_sent = $row['time'];
  $cal = $message_time_sent->diff($current_time);
  $ans = $cal->format("%D %H:%i:%s");
  sscanf($ans,"%d %d:%d:%d ", $day, $hr, $min, $sec);

  if (($day == 0) && ($hr == 0) && ($min == 0) && ($sec >0)){
   //do something here to get receive message automatically and notification....
 }
我想要达到的目标:

Facebook在不刷新浏览器的情况下自动接收消息。我希望是这样。 在不刷新浏览器的情况下自动弹出通知,我认为这并不是很重要,一旦我们能够找出第1项,那么其余的就都好了。 使用setInteval的难点在于浏览器会不断刷新聊天记录,因此当用户输入要发送的文本时,每次刷新时,该文本都会消失。请原谅我的英语

那么,有没有合适的方法来处理这个问题……

setInterval-set interval将在您设置的每个时间间隔调用您的函数

设置间隔样本:


你是对的。这可以通过setInterval完成。到目前为止,你尝试了什么?谢谢你,马克,我可以看到它的工作,我如何可以直接具体到我的聊天室部分,而不影响整个网页。请给我一些建议。即使这个stackoverflow页面也没有它。我必须刷新网页才能看到新的通知。请给出建议。看看第一个示例setInterval,我已经设置了div id=sample的属性,并通过document.getElementById对其进行了操作。将id或类添加到您的div即可。谢谢Mark。我已将其设置为我的聊天室div,但请帮助我聊天室div.innerHTML=新日期;我想这是我的问题。如何设置它来更新聊天信息,而不是日期。请给出建议。您需要执行一些ajax请求以从服务器获取数据。如果您不知道如何使用javascript执行ajax请求,或者如果已经有人问了这个问题,那么就直接搜索,那么创建另一篇文章可能是一个好主意。但是如果我理解的话,我会使用服务器上的php调用它们。
<html>
<body>
    <div id="sample">
        Day Mon DD YYYY HH:MM:SS GMT+XXX (Time Zone)
    </div>
</body>
</html>

<script>
var sample = document.getElementById('sample');
setInterval(
    // Here is where to do things like dom manipulation
    function() {
        sample.innerHTML = new Date;
    },

    // Here is where you set the interval asuming I want to update every 1 second
    1000
);
</script>
setTimeout(
    // This function will be called once the timeout is reached
    function() {
        console.log('Hello World');
    },

    // The timeout is 5 seconds
    5000
);