2014-01-23 72 views
0

我想停止與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"))。

回答

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> 
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」,而不是「如果」)希望這有助於。

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

+1

Downvoted for a)not using OPs code,2)poor reference。請使用MDN或類似的,而不是可疑的w3fools – mplungjan

+0

@mplungjan:經驗教訓。謝謝:) – tomascapek

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); 
}); 
-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(); 
}); 
+0

Downvoter:評論? – mplungjan