如何停止间隔功能

时间:2014-01-23 14:56:57

标签: javascript function return

我正试图用return语法停止:

<script>
   $(document).ready(function() {
      setInterval(function() {
         var url = "../view/anychange.php";
         $.getJSON(url, function(data) {
          f(data.exists == 0){
        alert("0"); 
          } else {
        alert("1");
            return; 
          }
      });
    }, 5000);


   });
</script>

如果我的表中存在数据,该函数每5秒验证一次。

我需要在data.exists == 1alert("1"))时停止此功能。

5 个答案:

答案 0 :(得分:4)

<script>
   $(document).ready(function() {
      var id;
      id = setInterval(function() {
         var idRefCopy = id; // You need this otherwise you'll get a reference exception
         var url = "../view/anychange.php";
         $.getJSON(url, function(data) {
         if(data.exists == 0){
           alert("0"); 
         } else {
           alert("1");
           clearInterval(idRefCopy);
           return; 
         }
      });
    }, 5000);
   });
</script>

答案 1 :(得分:2)

您必须在变量内定义间隔,然后将其清除。试试这个:

<script>
   $(document).ready(function() {
      var interval = setInterval(function() {
         var url = "../view/anychange.php";
         $.getJSON(url, function(data) {
          if(data.exists == 0){
        alert("0"); 
          } else {
             clearInterval(interval);
          }
      });
    }, 5000);


   });
</script>

你的代码中有一个拼写错误(我在这里修了它,它是一个“f”而不是“if”;)希望这有帮助。

答案 2 :(得分:2)

您需要清除间隔,这会阻止您的功能再次被触发。有关间隔参考,请参阅this

这应该是你的代码:

$(document).ready(function() {
    var i = setInterval(function() {
        var url = "../view/anychange.php";
        $.getJSON(url, function(data) {
            f(data.exists == 0) {
                alert("0"); 
            } else {
                alert("1");
                clearInterval(i);
            }
         });
    }, 5000);
});

答案 3 :(得分:1)

clearInterval怎么样?

var myVar = setInterval(function(){myTimer()},1000);

function myTimer()
{
    var d = new Date();
    var t = d.toLocaleTimeString();
    document.getElementById("demo").innerHTML=t;
}

function myStopFunction()
{
    clearInterval(myVar);
}

来源:W3Schools

答案 4 :(得分:-1)

我强烈建议你不要打你的服务器,除非你知道你的ajax已经完成

此示例将检查,但仅在服务器返回后

var counter = 0;
function checkData() {
  var url = "../view/anychange.php";
  $.getJSON(url, function(data) {
    if (data.exists == 0) {
      $("#someContainer").html("Not yet on attempt #"+(counter++));
      setTimeout(checkData,5000);
    } else {
      $("#someContainer").html("found on attempt #"+(counter++));
    }
  });
}
$(function() {
  checkData();
});