2017-05-11 15 views
0

すべて、 私はMVCを初めて使用しています。ボタンクリックが実行されるアプリケーションを構築しましたウィンドウが閉じるときにAjax jQueryが実行を停止する

  • マーケットデータを取得(長時間操作)。
  • データメッセージとデータベースへのアップロード。

これはJavaScript関数は次のようになります。で、今何が起こっている

function OnClick(s, e) { 
     if (true) { 
      $.ajax({ 
       type: "POST", 
       url: "@Url.Action("DataFileUpload", "ImportData")", 
       data: JSON.stringify({ positionDate: positionDate }), 
       dataType: "text", 
       contentType: "application/json; charset=utf-8", 
       beforeSend: function() { lpImport.Show(); }, 
       success: function (msg) { 
        ImportDataGridView.PerformCallback(); 
        ImportSuccessMessage.SetVisible(true); 
        ImportSuccessMessage.SetText(msg); 
        lpImport.Hide(); 
       }, 
       error: function (xhr) { 
        alert(xhr) 
        ImportDataGridView.PerformCallback(); 
       } 
      }); 
     } 
    } 

- ユーザーが実行の途中でブラウザを閉じると、コントローラのアクションがまだ実行されています。私は私のログでそれを見ることができます。 ブラウザを閉じて、コントローラのアクションDataFileUploadの実行を停止するにはどうすればよいですか?

ありがとうございます。

答えて

0

$ .ajax()が返すXMLHttpRequestのabort関数を使用できます。 abort()。要求がすでに送信されている場合、このメソッドは要求を中止します。

var xhr; 
function OnClick(s, e) { 
     if (true) { 
      xhr = $.ajax({ 
       type: "POST", 
       url: "@Url.Action("DataFileUpload", "ImportData")", 
       data: JSON.stringify({ positionDate: positionDate }), 
       dataType: "text", 
       contentType: "application/json; charset=utf-8", 
       beforeSend: function() { lpImport.Show(); }, 
       success: function (msg) { 
        ImportDataGridView.PerformCallback(); 
        ImportSuccessMessage.SetVisible(true); 
        ImportSuccessMessage.SetText(msg); 
        lpImport.Hide(); 
       }, 
       error: function (xhr) { 
        alert(xhr) 
        ImportDataGridView.PerformCallback(); 
       } 
      }); 
     } 
    } 

function closeBrowser() { 
    xhr.abort(); 
} 

が、これが唯一のクライアントでイベントをキャンセルします:よう

何か。また、サーバー側で要求を取り消す必要があります。

+0

ありがとうございます。私にとっては – ProgSky

+0

アボートが動作します。サーバー側ではキャンセルトークンを使用してIsCancellationRequestedをチェックしてから中止しました。 – ProgSky

関連する問題