You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AJAX检测数据库新增记录并触发提示音?

问题:数据库新增记录时的检测条件困惑

我不确定数据库表新增记录时该检测什么条件,希望得到帮助。

数据库记录示例

['Paul Abioro', 'paulexv...@gmail.com', 'chester', 'Teejay', 'Hi Teejay', '3', '2023-04-06 17:42:54']
['Paul Abioro', 'paulexv...@gmail.com', 'chester', 'Teejay', 'How are you doing?', '3', '2023-04-06 17:42:58']

已编写的AJAX代码

我写了获取数据库记录的AJAX代码,但里面的条件语句不知道该把datum.length和什么值比较:

load_messages = function(){
     $.ajax({
         url:"json/chat-content.php",
         method:"POST",
         data:{recipient_id:query_id},
         dataType: "JSON",
         success:function(resp) {
          let datum = resp.response;
          //condition for when the new record is added to the database
           if(datum.length == ){
    
               let audio = new Audio("assets/audio/mixkit-confirmation-tone-2867.mp3");
               audio.play();

               

           }
            setTimeout(load_messages, 60000);
         },
         error: function (data) {
           console.log(data);
         }
     });

}

解决方案思路

要检测新增记录,核心是对比当前获取的记录数和上一次的记录数,具体实现如下:

  1. 在函数外部定义全局变量,存储上一次加载的记录总数:
let lastMessageCount = 0;
  1. 在AJAX的success回调里,对比当前datum.length和lastMessageCount:
    • 当datum.length > lastMessageCount时,说明有新记录添加,触发提示音
    • 对比完成后,更新lastMessageCount为当前的记录数,方便下一次校验

修改后的完整代码:

let lastMessageCount = 0; // 全局变量存上一次的记录数

load_messages = function(){
     $.ajax({
         url:"json/chat-content.php",
         method:"POST",
         data:{recipient_id:query_id},
         dataType: "JSON",
         success:function(resp) {
          let datum = resp.response;
          // 检测是否有新记录
           if(datum.length > lastMessageCount){
               let audio = new Audio("assets/audio/mixkit-confirmation-tone-2867.mp3");
               audio.play();
           }
           // 更新记录数,用于下次对比
           lastMessageCount = datum.length;
           setTimeout(load_messages, 60000);
         },
         error: function (data) {
           console.log(data);
         }
     });
}
  1. 额外优化方案(更精准):
    如果担心旧记录修改导致误触发,可以结合记录的时间戳(示例中最后一项是消息时间)来判断,只检测时间晚于上一次最后一条消息的新内容:
let lastMessageTime = ''; // 存上一次最后一条消息的时间

load_messages = function(){
     $.ajax({
         url:"json/chat-content.php",
         method:"POST",
         data:{recipient_id:query_id},
         dataType: "JSON",
         success:function(resp) {
          let datum = resp.response;
          if(datum.length > 0){
              // 取最后一条消息的时间字段
              const currentLastTime = datum[datum.length - 1][6];
              // 对比时间判断是否有新消息
              if(currentLastTime > lastMessageTime){
                  let audio = new Audio("assets/audio/mixkit-confirmation-tone-2867.mp3");
                  audio.play();
              }
              lastMessageTime = currentLastTime;
          }
           setTimeout(load_messages, 60000);
         },
         error: function (data) {
           console.log(data);
         }
     });
}

内容的提问来源于stack exchange,提问作者devsam247

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:12:56