JQuery墙板,带有声音通知和闪烁的div / table单元格

时间:2015-09-04 20:08:00

标签: php jquery

我在桌面上有一个带有SQL查询的页面,可以在大屏幕上显示结果。

然后浏览到index.php,其中包含以下代码:

// <![CDATA[
$(document).ready(function() {

    // This part addresses an IE bug. without it, IE will only load the first number and will never refresh
    $.ajaxSetup({ cache: false });    
    setInterval(function() {
        $('.container').load('data.php');
    }, 2000); // the "2000" here refers to the time to refresh the div. it is in milliseconds.
});
// ]]>

HTML:

<div class="container"><h3>Loading Data...</h3></div>

因此它会不断加载此页面。

我想要的是拥有它,所以如果任何查询包含需要对其执行操作的数据,表格单元格将闪烁2种颜色,并且声音将每5分钟播放一次。

这样做的最佳方法是什么,并保持常量页面加载?

1 个答案:

答案 0 :(得分:2)

我会将.load()更改为ajax调用,该调用在完成后调用函数。检查下面的脚本:

// Prepare the audio - replace the link with your own mp3
var audioElement = document.createElement('audio');
audioElement.setAttribute('src', 'http://www.uscis.gov/files/nativedocuments/Track%2090.mp3');

// Global that will control the flashing / playing of sound
var alertUser = false;
$(document).ready(function() {
    $.ajaxSetup({ cache: false });      // Fix IE bug
    setInterval(function(){
        $.ajax({
            url: "data.php",
            complete: function( jq, content ){
                $('.container').html( jq.response );
                if( jq.response.indexOf( 'from' ) != -1 ) { // your logic goes here to decide the warning
                    alertUser = true;
                } else {
                    alertUser = false;
                }
            }
        }); 
    }, 2000);

    setInterval(function(){
        if( alertUser ) {
            // play tune
            audioElement.play();

            // flash background
            window.setTimeout( function(){
                $('.container').css('background-color','red')
            }, 200 );
            window.setTimeout( function(){
                $('.container').css('background-color','blue')
            }, 400 );
            window.setTimeout( function(){
                $('.container').css('background-color','transparent')
            }, 600 );
        }
    }, 1000);
});