定时器调用ajax,clearInterval为啥清除不掉定时器呢?十万火急,帮忙看下

function getRank() {
    $.ajax({
        url: '。。。。',
        type: 'GET',
        success: function(data) {
      
            // alert(data)
            alert(data)
            // console.log(data)
            if (data == 'success') {
                // dingshi = false
                // clearInterval(itime)
             //      window.open('rank.html')
             // $('.box').css('display','none')
             //    $('.rankbox').css('display','block')
             //    getping()

             clearInterval(itime)
            }
        },
        error: function(res) {
            console.log('错误')
        }
    })

}
var itime = setInterval(getRank,1000)
阅读 6k
4 个回答

ajax请求是异步的啊...感觉你的clearInterval应该可能是清除了定时器但是无法停止ajax操作吧...

曲线救国吧~

function getRank() {
    if (tips) {
        $.ajax({
            url: 'localhost',
            type: 'GET',
            success: function(data) {
                alert(data);
                if (data == 'success') {
                    tips = false;
                }
            },
            error: function(res) {
                console.error('错误');
            }
        });
    } else {
        clearInterval(itime);
    }
}

var tips = true; // 标志位
var itime = setInterval(getRank, 1000);

定义一个全局变量,然后把setInterval这方法赋值给这个变量,在ajax请求返回后再清除掉就好了。
上代码:

var interval = null;
function getRank() {
    interval = setInterval(function() {
        $.ajax({
            url:'https://blog.csdn.net/qq6759',
            type:'GET',
            success: function(res){
                clearInterval(interval);
            }
        });
    }, 1000);
}