2015-06-10 119 views
1
setInterval(makeAjaxCall(),5000); 

     function makeAjaxCall() { 
      var url = '/Lines/dbcheck/[email protected]&[email protected]&[email protected]'; 
      var data = {}; 
      $.get(url, data, function(response_text){ 
       if (response_text == 1) 
       { 
        document.location.reload(); 
       } 
       else 
       { 
        setInterval(makeAjaxCall(),5000); 
       } 
      }, "text"); 
     } 

我已經可以從控制器調用函數,但只有一次。我想創建函數來檢查數據庫中的數據並返回1或0.如果它是0,我想延遲5秒,然後再次調用函數。如何使用javascript調用控制器的功能

問題是參數response_text沒有更新,因爲我可以從控制器僅第一次調用函數,因爲你傳遞()的立即執行

+0

不需要你else塊,因爲它如果response_text增加了其它計時器每5秒!= 1取而代之,當* response_text *爲* 1時,你應該準確地殺掉你的計時器* – Robert

回答

1
setInterval(makeAjaxCall(),5000); 

     function makeAjaxCall() { 

      $.ajax({  
       cache : false,  
       dataType: "json",  
       type: "GET", 
       async:false, 
       url: url , 
       success: function (fdata) { 
       if (fdata == 1) 
       { 
        document.location.reload(); 
       } 
       else 
       { 
        setInterval(makeAjaxCall(),5000); 
       } 
      }, 
      error: function (reponse) {          
       } 
      }); 
} 
+0

thx它的工作^^ – anin

0

你的代碼,它沒有等待時間延遲。

setInterval(makeAjaxCall(), 5000); 

變化

setInterval(makeAjaxCall, 5000); 

或替代方法

setInterval(function() { 
    makeAjaxCall(); 
}, 5000); 
+0

是的,現在計時器正在工作,但它仍然會去控制oller只是1次,然後它不見了 – anin

相關問題