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)
- 最新评论