$(document).ready(function(){
c = setInterval(checkIsExist,10000)//每10秒执行一次checkIsExist方法
})
function checkIsExist(){
$.ajax({
type: "POST",
url: "/SecondServlet",
data: "date="+new Date(),
success: function(rtmsg){
if(rtmsg == 'exist'){
$("#download").html("<button onclick=\"window.open('/ArticleServlet')\">下载</button>")
window.clearInterval(c)
}
}
})
}
你这种情况就不应该用轮询,而应该在ajax的回调函数(最好是complete)中再次发起下一次请求,这样就可以保证每次请求都是在上一次请求结束后才发起的,这样就不会造成崩溃了。比如:
function xxx(){
$.ajax({
url:"......",
data:{......},
success:function(data){
//处理返回数据
},
error:function(){
//处理错误
},
complete:function(){ //不管成功与失败,都会发生complete回调
setTimeout(xxx,5000) //5秒后再次发起ajax请求
//也可以直接用 xxx() 可以做到完全实时,但会牺牲一些性能
}
})
}
特别注意,xxx函数在外部调用时,不能再用 setInterval,而应该是xxx()直接调用!