我和许多初学者一样来到这里:D所以,不要浪费时间,我会解释我的问题。
http://heavenpro.lt/ukv - 演示网站。有2个用户等。
sekret - demo
demo - demo
(用于登录)如果您发现任何错误 - 很高兴知道有机会解决它。 当用户关闭时(Išj。 - 按钮),演示用户看到日志:等待学生(Laukiama studento)
在sekret打开之后(Įjungt - 按钮)一切似乎都没问题,演示用户看到活动用户,点击下一个 - 提供改变了学生的警报,如果你想更新信息(看新的)。关闭后(Išj。按钮)在IE以外的所有浏览器中运行良好..似乎clearInterval不起作用,经过大量发送查询和响应后,它弹出多个警报窗口.. 希望你明白我的意思。var sid = "{$i->sid}";
var mid = "{$i->mid}";
var update_st = setInterval(function(){
$.post(
'ajax/check-student.php',
{ sid: sid, mid: mid },
function(resp){
if(resp == "next") {
var cf = confirm('Buvo pakeistas studentas besiginantis darbą. Ar rodyti sekantį studentą?');
clearInterval(update_st);
if (cf) {
window.location = "?";
}
else {
alert('Kai norėsite perjungti kitą vartotoją, prašome perkrauti puslapį.');
clearInterval(update_st);
}
}
else if (resp == "none") {
alert("Gynimas baigtas. Ačiū už dalyvavimą vertinimo komisijoje.");
clearInterval(update_st); // this place not works..
window.location = "?";
}
});
}, 250);
经过测试很多时间..似乎有时候工作正常..在IE 9上测试..
也许有人可以提供任何其他想法以同样的方式吗?没有多少查询每秒发送到文件...
答案 0 :(得分:1)
您可以使用setTimeout而不是setInterval,原因很多...... 所以你将调用创建setTimeout的函数!并且这个方法将保证如果对服务器的查询完成,您的代码将被执行!
var a = function(){
var timer = setTimeout(function(){
// ok your ajax query success of error whatever
a();
console.log(2)
}, 1000);
}
a();
您必须将查询放在setTimeout中,并在查询完成后调用 a 函数或其他任何内容!
所以demo