2017-02-25 143 views
-1

我有這個script從中獲取新郵件我database播放通知聲音用JavaScript

setInterval(function() { 
     $.ajax({ 
      type: "GET", 
      url: "get_chat.php", 
      dataType: "html", 
      success: function (response) { 
       $(".msg_area").html(response); 
      } 
     }); 
    }, 2000); 

我嘗試將聲音一旦新數據添加到database添加到它,但是當我加入在script以上,它起着audio2 seconds(我想這是因爲它在setInterval

setInterval(function() { 
     $.ajax({ 
      type: "GET", 
      url: "get_chat.php", 
      dataType: "html", 
      success: function (response) { 
       $(".msg_area").html(response); 
       var audio = new Audio('audio_file.mp3'); 
       audio.play(); 
      } 
     }); 
    }, 2000); 

所以請我問。只有當新數據添加到數據庫時,我該如何播放聲音?

+0

是否每次都有「響應」來臨? –

回答

2

緩存最後的response並將其與新版本進行比較以確定是否播放音頻文件。

var lastResponse = '' 

setInterval(function() { 
    $.ajax({ 
    type: "GET", 
    url: "get_chat.php", 
    dataType: "html", 
    success: function(response) { 
     $(".msg_area").html(response) 
     if (lastResponse && response !== lastResponse) { 
     var audio = new Audio('audio_file.mp3') 
     audio.play() 
     } 
     lastResponse = response 
    } 
    }); 
}, 2000); 

編輯:如果你想要的音頻播放的第一次response進來,從上面的代碼中刪除lastResponse &&

+0

非常感謝。這工作正常 –

0

首先,確保它起着因爲setInterval()

你需要響應前後對比數據庫中的信息的行NUM週期2s ..對我來說是簡單的事情是通過它藏在裏面<div>在您的最後一條消息

setInterval(function() { 
     var message_num = // get the number from the last message 
     $.ajax({ 
      type: "GET", 
      url: "get_chat.php", 
      dataType: "html", 
      success: function (response) { 
       $(".msg_area").html(response); 
       var new_message_num = // get the number from the last message after response 
       if(new_message_num > message_num){ 
        var audio = new Audio('audio_file.mp3'); 
        audio.play(); 
       } 
      } 
     }); 
    }, 2000);