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); } }); } });