2016-04-15 4 views
2

私のページには1つのフォームがあります。フォームを送信すると、私はAjaxコールをサーバーに送信します。サーバー側はC#asp.netAjaxポーリング中に別のAjaxが実行中

コントローラは何かをして、現在の状態をセッションに保存しています。 ajaxコールには約3分かかります。

私は5秒ごとにサーバーにajax要求を送信し、セッションから現在の統計情報を読み取り、フロントエンドを更新するajaxポーリングスクリプトを設定します。

問題は、最初のajaxが完了するまでajaxポーリングコールが待機していることです。

最初のajaxが実行され、サーバー側でいくつかのことを行い、セッションで現在の状態を更新している間に、この状態をセッションから読み取る別のポーリングスクリプトが必要ですが、問題は最初のajax行われなければ。

ここで問題になる可能性があるもの私はセッションについての知識が低く、問題の内容とその解決方法を理解できません。

function installation() { 
    var intervalID = setInterval(function() { checkStatus() }, 5000); 
    var data = {//some data}; 

    $.post("/WebDomain/Installation", data, function (result) { 
     clearInterval(intervalID); 
     console.log(result); 
    }); 
}; 

function checkStatus() 
{ 
    $.post("/WebDomain/GetInstallStatus", function (result) { 
      console.log(result.Status); 
    }); 
} 
+0

は、あなたがこのためにSignalRを考えがあり役立つことを願っていますか?良いフィット感のように聞こえる:http://www.asp.net/signalr – Elliott

+0

それは素晴らしい音だ。 Webソケットを使用して実装することができたらいいですね。それは良い解決策になります。しかし、この場合、ポーリング可能な場合は、ポーリングするだけでAJAXが必要になります。 – carpics

+0

何かのためにSQLを使用していますか?なぜなら、ajaxは非同期で、サーバーへの複数の呼び出しが可能でなければならないため、問題は複数のオープンな接続(SQLが使用されている場合)である可能性があります。私がうんざりするかどうかわからない –

答えて

0
function installation() { 

     var data = {//some data}; 

     $.post("/WebDomain/Installation", data, function (result) { 
      setTimeout(function(){ checkStatus(); }, 5000); 
     }); 
    }; 

    function checkStatus() 
    { 
     $.post("/WebDomain/GetInstallStatus", function (result) { 
       installation(); 
     }); 
    } 


    $(document).ready(function(){ 

    setTimeout(function(){ checkStatus(); }, 5000); 

    }); 

それは

Explanation: after 5sec of your dom is ready checkStatus() will call, 
if success only installation(); will call 
In installation(); success we are again calling checkStatus(). 
now you can check some condition for breaking this iterations 
関連する問題