setInterval中的clearInterval,无法使用jquery和.post()来中断循环
我正在尝试在setInterval函数中调用clearInterval,它正在进行一些ajax获取,没有任何运气。
var nre = setInterval('checkit()',5000); $(function() { checkit = function(){ $.post("check.php", { login: "" }, function( data ) { if (data == 1) { $('#debug').html(data); window.clearInterval(nre); } }); } });
关键是,循环不会中断,尽管收到正数据。
我已经读过setInterval函数的异步动作可能是这里的问题。 有没有更好的方法来解决它?
将所有内容移动到同一范围内,不要使用setInterval
的字符串forms:
$(function() { var nre = setInterval(checkit, 5000); function checkit() { $.post("check.php", { login: "..." }, function( data ) { if (data === 1) { $('#debug').html(data); clearInterval(nre); } }); } });
checkit将不会在document.ready
之外显示,因此请在document.ready
移动setInterval
调用。
如果要为变量checkit分配匿名函数,则必须在分配变量后移动setInterval调用。
$(function() { var checkit = function(){ $.post("check.php", { login: "" }, function( data ) { if (data == 1) { $('#debug').html(data); window.clearInterval(nre); } }); } var nre = setInterval(checkit,5000); });
或者,如果声明函数,则可以在函数声明之前调用setInterval
。
$(function() { var nre = setInterval(checkit, 5000); function checkit() { $.post("check.php", { login: "..." }, function( data ) { if (data == 1) { $('#debug').html(data); clearInterval(nre); } }); } });