0

現在のページの場所をサーバー上で PDF を生成するページに設定するボタンがページにあります。ファイルの生成と送信には数秒かかるため、クリックを受信して​​処理中であることをユーザーに通知したいので、ダウンロード プロセスにスピナーを追加しました。

$("#download-pdf-button").click(function() {                        
    // some code to display a spinner

    window.location.href = "/path/to/downloadGeneratingPage";

    // some code to hide the spinner
});

ダウンロードは正常に機能しますが、このコードの実行方法では、スピナーがすぐに非表示になります。スピナーが表示されるようにする方法を見つけたいのですが、サーバーがリクエストを送り返すと、スピナーは再び非表示になります。

データを使用して非表示の iframe に送信するなど、他のいくつかのオプションを試しました$.get()が、サーバーの HTTP 応答でできるようにファイル名を提案することはできません (ただし、スピナーを非表示にすることはできます)非表示にしたい時点で)。名前は大きな問題ではありませんが (あると便利ですが)、ユーザーが名前を変更せずに開くことができるように、少なくとも拡張機能を追加する必要があります。

基本的に私が欲しいのは:

  • リクエスト送信時にスピナーを表示する
  • ブラウザが受信したときにファイルをダウンロードします(必要に応じて、サーバー側のコードを変更できます。たとえば、異なる HTTP ヘッダーを送信できます)。
  • ファイルの受信時にスピナーを非表示にする
  • ファイル拡張子を追加できるようにする
4

1 に答える 1

1

に値を設定するwindow.location.hrefと、現在のページがアンロードされ、定義したページがロードされます。そのステートメントの後のコードは実行されません。

おそらく必要なのはajax requestです。

//Code to show the spinner
$.ajax( "/path/to/downloadGeneratingPage" ).done( function( data ) {
  //Code to hide the spinner and do something with the data the server sent back
} );
于 2013-07-03T17:40:58.367 に答える