快捷搜索:   nginx

ajax轮询读取数据 AJAX异步间隔几秒循环查询 AJAX循环读取数据 终止轮询方法

AJAX可以实现后台循环读取数据,代码如下

<script>

    setInterval("test()",4000);

    function test() {

        $.ajax({

            url:'payajax.php?out_trade_no=<?php echo $arr['Merchants']; ?>',

            async:true,

            type: 'get',

            success: function (data) {

               if(data=='OK'){

         alert('充值成功!');

          window.location.href = './';

        }

            }

        })

    }

</script>


这个是一个支付接口的异步读取付款状态的功能。

但是这样会发现这个轮询会一直循环一直跳出充值成功的提示,所以我们需要有个内部终止轮询的方法,稍微修改成如下:

<script>
var timesRun = 0;
var interval = setInterval(function(){
if(timesRun === 1){
clearInterval(interval);
}
test();
}, 2000);
    function test() {
        $.ajax({
            url:'payajax.php?out_trade_no=<?php echo $arr['Merchants']; ?>',
            async:true,
            type: 'get',
            success: function (data) {
               if(data=='OK'){
                timesRun=1;
                alert('充值成功!');
                window.location.href = './';
                return;
        }
            }
        })
    }
</script>

当然还可以修改下,设置超时时间,或者轮询多少次后终止轮询

限制次数的

var timesRun = 0;
var interval = setInterval(function(){
timesRun += 1;//每刷新一次 timesRun 就+1
if(timesRun === 60){//如果它等于 60 次了,就删除setInterval 循环
clearInterval(interval);
}
//这里写你的轮询调用代码
}, 2000);



或者限制时间的:

var startTime = new Date().getTime();//现在的时间
var interval = setInterval(function(){
if(new Date().getTime() - startTime > 60000){//现在的时间减去刷新开始的时间大于 60 秒
clearInterval(interval);//就删除 setInterval 轮询
return;
}
//这里写你的轮询调用代码
}, 2000);


顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论