2016-04-19 52 views
2

我從啓動AJAX調用的視圖頁(MVC剃鬚刀)調用Java腳本函數。我希望這會定期重新發生。出於某種原因,它在遞歸循環定期調用Ajax

function GetData(url) { 
    $.ajax({ 
     url: url, 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     success: onSuccess, 
     error: onError, 
     complete: function(xhr, status) { 
      setTimeout(GetData(url), 5000); 
     } 
    }); 
} 

function onSuccess(data, status, xhr) { 
    for (var key in data) { 
     if (data.hasOwnProperty(key)) { 
      var id = data[key].id; 
      var value = data[key].value; 
      document.getElementById(id).innerHTML = value; 
     } 
    } 
} 

會在HTML頁面一側的這個函數的調用在頁面加載

<script type="text/javascript"> 
    GetData("someurl"); 
</script> 

任何想法,爲什麼它會遞歸時,我完全設置超時回電話。

回答

2

setTimeout(GetData(url), 5000);立即調用GetData函數並且確實進入無限循環。

相反,你想傳遞的功能第一個參數:

setTimeout(function() { 
    GetData(url); 
}, 5000);