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