查询clearInterval当变量是" x"

时间:2014-10-29 09:59:05

标签: javascript jquery ajax setinterval clearinterval

我已经创建了一个函数,它使用AJAX控制我的数据库中的某一行的某一行。 我使用click函数调用该函数,并将该函数放入setInterval函数中,以便每秒进行10次检查。

在开始时它将返回0,但在某些时候(通常在5秒内)它将返回els而不是0,当我想要clearInterval时。

但是我不知道怎么回事?

这是我的功能:

function get_buzzer() {
$.ajax({
    url: 'ajax_buzzer.php',
    dataType: 'json',
    async: false,
    type: 'post',
    data: {
        job: 'get'
    },
    success:function(s) {
        if(s['number'] == 0) {
            var player = false;
        } else {
            var player = true;
        }
    }, error:function(e) {
    }
});
}

$(document).ready(function() {
    $('#test').click(function() {
        var buzzer = setInterval("get_buzzer()",100);
    });
});

4 个答案:

答案 0 :(得分:1)

您可以执行类似

的操作
$(document).ready(function () {
    //make buzzer a share variable
    var buzzer;
    $('#test').click(function () {
        buzzer = setInterval(get_buzzer, 100);
    });

    function get_buzzer() {
        $.ajax({
            url: 'ajax_buzzer.php',
            dataType: 'json',
            async: false,
            type: 'post',
            data: {
                job: 'get'
            },
            success: function (s) {
                if (s['number'] != 0) {
                    //if number is not 0 then clear the interval
                    clearInterval(buzzer)
                }
            },
            error: function (e) {}
        });
    }
});

答案 1 :(得分:1)

试试这个:声明全局变量来存储间隔,并在成功调用ajax时调用window.clearInterval

var buzzer;

function get_buzzer() {
$.ajax({
    url: 'ajax_buzzer.php',
    dataType: 'json',
    async: false,
    type: 'post',
    data: {
        job: 'get'
    },
    success:function(s) {
        if(s['number'] == 0) {
            var player = false;
        } else {
            var player = true;
            //clear interval 
            window.clearInterval(buzzer);
        }
    }, error:function(e) {
    }
});
}

$(document).ready(function() {
    $('#test').click(function() {
        buzzer = setInterval("get_buzzer()",100);
    });
});

答案 2 :(得分:0)

使用:

内部成功使用:并制作var buzzer Gloval var。

    clearInterval(buzzer);

Refence

答案 3 :(得分:0)

您只需要清除ajax调用成功处理程序中的条件。

        success: function (s) {
            if (s['number'] != 0) {
                //if number is not 0 then clear the interval
                clearInterval(buzzer)
            }
        },
        error: function (e) {}