2016-04-19 10 views
2

私はAJAX呼び出しを開始するビューページ(MVCカミソリ)からJavaスクリプト関数を呼び出しています。私はこれを定期的に再発生させたい。何らかの理由でそのHTMLページ側では再帰ループ定期的に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; 
     } 
    } 
} 

に行くそのページのロードで、この関数の呼び出し

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

任意のアイデアなぜその私は完全にタイムアウトを設定していたときに、再帰行きます折り返し電話。

答えて

2

setTimeout(GetData(url), 5000);はすぐに機能し、実際には無限ループに入ります。

代わりに、あなたは最初の引数としての機能を渡したい:

setTimeout(function() { 
    GetData(url); 
}, 5000); 
関連する問題