2014-10-29 58 views
0

我已經做了一個功能,正在控制我的數據庫中的某一行的AJAX。 我使用click函數調用函數,並將函數放入setInterval函數中,每秒鐘檢查10次。查詢clearInterval當變量是「x」

在開始時它會返回0,但在某些時候(通常在5秒內)它會返回比0更接近的東西,當我想要clearInterval時。

但我不知道如何做到這一點?

這是我的函數:

function get_buzzer() { 
$.ajax({ 
    url: 'ajax_buzzer.php', 
    dataType: 'json', 
    async: false, 
    type: 'post', 
    data: { 
     job: 'get' 
    }, 
    success:function(s) { 
     if(s['number'] == 0) { 
      var player = false; 
     } else { 
      var player = true; 
     } 
    }, error:function(e) { 
    } 
}); 
} 

$(document).ready(function() { 
    $('#test').click(function() { 
     var buzzer = setInterval("get_buzzer()",100); 
    }); 
}); 

回答

1

你可以做這樣的事情

$(document).ready(function() { 
    //make buzzer a share variable 
    var buzzer; 
    $('#test').click(function() { 
     buzzer = setInterval(get_buzzer, 100); 
    }); 

    function get_buzzer() { 
     $.ajax({ 
      url: 'ajax_buzzer.php', 
      dataType: 'json', 
      async: false, 
      type: 'post', 
      data: { 
       job: 'get' 
      }, 
      success: function (s) { 
       if (s['number'] != 0) { 
        //if number is not 0 then clear the interval 
        clearInterval(buzzer) 
       } 
      }, 
      error: function (e) {} 
     }); 
    } 
}); 
+0

這樣做對我來說,謝謝:) – Legarndary 2014-10-29 10:16:32

1

試試這個:聲明全局變量來存儲間隔和阿賈克斯的成功召呼window.clearInterval

var buzzer; 

function get_buzzer() { 
$.ajax({ 
    url: 'ajax_buzzer.php', 
    dataType: 'json', 
    async: false, 
    type: 'post', 
    data: { 
     job: 'get' 
    }, 
    success:function(s) { 
     if(s['number'] == 0) { 
      var player = false; 
     } else { 
      var player = true; 
      //clear interval 
      window.clearInterval(buzzer); 
     } 
    }, error:function(e) { 
    } 
}); 
} 

$(document).ready(function() { 
    $('#test').click(function() { 
     buzzer = setInterval("get_buzzer()",100); 
    }); 
}); 
0

使用:

裏面的成功使用:使var buzzer Gloval var。

clearInterval(buzzer); 

Refence

0

你只需要清除Ajax調用了一個條件成功處理程序的時間間隔。

 success: function (s) { 
      if (s['number'] != 0) { 
       //if number is not 0 then clear the interval 
       clearInterval(buzzer) 
      } 
     }, 
     error: function (e) {}