2016-12-30 4 views
0

asp.netでハイチャートを使用してダッシュボードを構築しています。今、私はJavascriptとAjaxを使用したクライアント側を持っています。バックエンドはC#を使用して行われます。私はさまざまな銀行のデータを「x」分ごとに自動的に更新するように求められています。さて、私は数分ごとにすべてのバックエンドの処理を行う関数を呼び出す必要があります。その後、データはArrayなどのコンテナに格納され、すべての表示と処理を行うJavascriptに送信されます。C#で数秒ごとに関数呼び出しを行う方法は?

分かりませんC#コードでデータが更新され、新しいデータがJavascriptに渡されるため、繰り返し数分ごとに繰り返し呼び出す関数を作成するにはどうすればよいでしょうか?分)。

+2

連続ポーリングの代わりにwebsocketを使用することを検討してください。 – gvmani

+1

try setInterval refer-> http://codereview.stackexchange.com/questions/113596/writing-cs-analog-of-settimeout-setinterval-and-clearinterval – Sharmila

答えて

0

JSメソッド/ AJAXコールをsetIntervalファンクション内に書き込んで、間隔を割り当てます。コードの下に例えば は、「こんにちは」、3秒ごと(3000ミリ秒)に警告します:

setInterval(function(){ alert("Hello"); }, 3000); 

同様の方法は、常にデータの最新のセットを返します。これは、ここからあなたのC#のメソッド(API)を呼び出します。

+0

: - ご返信ありがとうございます。私のコードの背後にはforループがあるので、特定の時間だけforループで計算を一時停止し、現在のデータがJSメソッドに渡されたときにのみ計算を再開する必要があります。それについてどうすればいいですか? –

+0

ok.donはforループを使用せず、sc.transactionstats(country [k]、bankid [k])を追跡するインデックスとして静的/大域変数kを使用します。方法。このメソッドが呼び出されるたびにk ++を増加させ、そのインデックスを使用して値を取得します。 – JerryGoyal

+0

:ありがとうございます。 –

0

使用webmethod C#でjsonを返し、与えられた時間内にGetGraphData()関数を呼び出すsetInterval機能を使用します。
サンプルjavascript -

function GetGraphData() { 
    //ajax call here, call c# webmethod using ajax 
    //and decode json string using JSON.parse() 

    // call this function again in 1000ms 
    setInterval(GetGraphData, 1000); 
} 

//add Get graph data in page load 
$(function() { 
    //first call 
    GetGraphData(); 
}); 

サンプルWebMethod -

[WebMethod] 
public static string calctranscs() 
{ 
    string strJson=""; 

    //here create json string with your logic 

    retutn strJson; 
} 
0

ページロードイベントは一度だけの関数を呼び出します。 C#でWebMethodを作成する必要があります。

[WebMethod] 
public void calctranscs() { 
    for (int i = 1; i < bankid.Length; i++) { 
     sc.transactionstats(country[i], bankid[i]); 
     merchant_name = sc.MerchantName; 
     success_transcs = sc.noofsuccessfultranscs; 
     failed_transcs = sc.nooffailedtranscs; 
     service_transcs = sc.nooffailedservicetranscs; 
     count++; 
    } 
} 

ここでは、JavaScript(またはjQueryが望ましい)からこの関数を呼び出します。

function CallCalctranscs() {  
     $.ajax({ 
     type: "GET", 
     url: '<youraspxpage>.aspx/calctranscs', 
     data: "", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      alert("success"); 
     }, 
     error: function (e) { 
      alert("failure"); 
     } 
    }); 
} 

上記の機能を繰り返し呼び出します。

setInterval(CallCalctranscs, 100); 
+0

: - ありがとうございます。私はちょっと混乱しています。以来、calctranscsは計算を行う実際のメソッドを呼び出すforループを持っています。私は、以前のデータがJSに送られたときにのみ、フォアループ計算が次のインデックスに進むような方法でデータを送信できる必要があります。それについてどうすればいいですか? –

+0

そのためには、AJAXの応答を読み込み、応答が成功するとforループのカウントをインクリメントする必要があります(上記のAJAX関数には成功/失敗のプロパティがあります)。また、ASP.Net SignalR https://www.asp.net/signalrを使用して、より良いアプローチを提案したいと思います。 –

+0

:ありがとうございます。 –

関連する問題