2017-09-29 3 views
0

を提出キャプチャした後、私はファイル(ASP.NET MVC)を返し、バックエンドAPIのメソッドを持っているイベント(なしアヤックス)

<form id="genForm" action="@Url.Action("GenerateReport", "Report")" method="POST"> 
    <div class="card border-primary"> 
     <div class="card-header">Report parameters</div> 
     <div class="card-body"> 
      <div class="dx-fieldset"> 
       <!-- inputs and params --> 
       <div class="dx-field"> 
        <div class="dx-field-label"></div> 
        <button class="dx-field-value" id="btn-generate"></button> 
       </div> 
      </div> 
     </div> 
    </div> 
</form> 

そしてフォームを送信するJavaScriptのイベント:このコードでは

<script type="text/javascript"> 
    $("#btn-generate").click(function() { 
     // some other modifications 
     $("#genForm").submit(); 
    }) 
</script> 

私は、生成ボタンをクリックしたときには、サーブへの要求をポストr(ページがリフレッシュ)、ファイルをダウンロードします(ダウンロードが完了すると、ページはリフレッシュしなくなります)。投稿とダウンロード中はブラウザが読み込まれていますが、ページのDOMは変更されません。

私の質問は、DOMは変更されないので、「送信後」イベント(実際にダウンロードが完了したとき)をキャプチャして処理する方法です。

ありがとうございます。

答えて

0

過去に私が使用したトリックは、ダウンロードが完了したかどうかを示すためにクッキーを使用することです。ここで

は、私は過去にそれをやった方法は次のとおりです。

  • はあなたの提出のターゲットとして機能するのiframeを作成します。これはちょうどあなたがクッキーをチェックするために "load"イベントをキャプチャすることができます。

  • クッキーがあるかどうかを確認するためにそのiframeでloadイベントをキャプチャします。クッキーがある場合、ダウンロードが完了したことを知っています。 (しかも、クッキーの値はあなたに多くの情報を与えることができます)

  • は、ファイルがダウンロードされた後、要求に

  • を提出IFRAMEを削除し、必要に応じて他のコードを実行します。

私はいつもiframeを使用していますが、これはwindow.open()でも使用できます。

+0

だから私はこれには実際的な解決策はないと思いますか? – Fourat

関連する問題