无法退出SetInterval

时间:2016-02-04 16:57:56

标签: javascript php

我遇到了一个无法退出此setInterval的问题。此函数对Ajax调用PHP文件。如果返回的数据很有用,它会将全局变量设置为数据,然后它应该返回并停止调用该PHP文件。我目前遇到的问题是,即使它获得有用的数据,它也不会停止运行。回报似乎没有效果。也许我只需要另外一套眼睛。

NSDate

2 个答案:

答案 0 :(得分:1)

您需要clearInterval而不是return

var interval= setInterval(function(){
  clearInterval(interval); //clear interval
}, 9000)
  

间隔是您要取消的重复操作的标识符。此ID从setInterval()返回。

所以在你的情况下它应该是:

var interval = setInterval(function() {    
  $.ajax({
    type: "POST",
    url: 'www.example.com/test.php',
    success: function(data) {
      alert(data);
      if (data != 'None') {
        url = data;
        document.getElementById("disableddesktop").style.display = "none";
        document.getElementById("download").style.display = "block";
        document.getElementById("enableddesktopscan").style.display = "block";

        $.ajax({
          type: "POST",
          url: 'www.example.com/test.php',
          data: {
            plan: document.getElementById("plan").value,
            country: document.getElementById("firstcountry").value
          },
          success: function(data) {
            console.log(data);
            numberoforders = data;
            document.getElementById("total").innerHTML = data;
          }
        });

        clearInterval(interval); //clear interval      
      }
    }
  });
}, 9000);
  

正如mplungjan所说,将setInterval用于AJAX并不是一个好主意   而是使用setTimeout

答案 1 :(得分:0)

要停止setInterval,请使用变量和clearInterval:

var tId = setInterval();
clearInterval(tId)

然而,使用setInterval和Ajax并不是一个好主意。

而是这样做:

function getData() {
  $.ajax({
    type: "POST",
    url: 'www.example.com/test.php',
    success: function(data) {
      // alert(data); // NEVER alert in an setInterval or setTimeout
      if (data != 'None') {
        url = data;
        document.getElementById("disableddesktop").style.display = "none";
        document.getElementById("download").style.display = "block";
        document.getElementById("enableddesktopscan").style.display = "block";

        $.ajax({
          type: "POST",
          url: 'www.example.com/test.php',
          data: {
            plan: document.getElementById("plan").value,
            country: document.getElementById("firstcountry").value
          },
          success: function(data) {
            console.log(data);
            numberoforders = data;
            document.getElementById("total").innerHTML = data;
          }
        });
      }
      else setTimeout(getData,9000); 
    }
  });
}