1

全て、

フォームを含む HTML ページがあります。

ユーザーがフォームに入力して [送信] をクリックすると、フォームはユーザーの入力を PHP ページに送信します。

その PHP ページは入力を処理し、ユーザーの結果を attachment として返します。

これまでのところ、すべて問題なく動作しています。ユーザーが [送信] をクリックすると、ブラウザのプログレス バーが「回転」し始め、数秒後に添付ファイルがダウンロードされます。

ただし、ブラウザーでは、ユーザーはまだフォーム ページにいます。それは私には問題ありません。

だから - これが私の質問です。理想的には、ユーザーが「送信」をクリックすると、「プロセス」が進行中であることを示すためにフォームページを更新したいと思います。例えば、

  • 送信ボタンを無効にして、重複したクリックを防ぐ
  • 「ダウンロード中」メッセージと「スピナー」タイプのグラフィックを表示する

次に、ダウンロードが完了したら、そのイベントをキャプチャして、送信ボタンを再度有効にしてダウンロード メッセージを削除できるようにします。

これは可能ですか?

それとも - 私の初期設定が間違っているのでしょうか? これを行うより良い方法はありますか?(つまり、PHP ページを呼び出すフォームを作成し、PHP ページに添付ファイルを返してから、呼び出しページにコントロールを返すようにしますか?)

あなたのアドバイスと洞察力を前もってありがとう!

4

4 に答える 4

1

http を介したファイルのダウンロード/ストリーミングに関するイベントが発生するかどうかはわかりません (完全にサーバー側で発生すると考えてください)。クライアントのブラウザへのファイルのストリーミングを開始したら、フォーム ページに再度リダイレクトします。

これは、PHP と Javascript の両方で実現できます。:)

于 2012-09-10T13:53:57.407 に答える
1

JavaScript を使用して、新しいウィンドウでダウンロードを開きます。そのため、POST リクエストでダウンロードを返さないでください。単にページをリロードして、ファイルをダウンロードする PHP スクリプトを呼び出す新しいウィンドウを開くページに JavaScript を配置してください。

于 2012-09-10T13:55:19.533 に答える
1

この種の機能 (送信ボタンの無効化、スピナーまたは進行状況バーの表示) を取得するには、JavaScript を使用する必要があります。JQuery Ajax Form プラグインをお勧めします: http://www.malsup.com/jquery/form/

JS と AJAX を使用する際の注意点は、ユーザーがファイルを添付ファイルとしてダウンロードするのが難しいことです。

純粋に HTML と PHP を使用するには、送信時に別のページにリダイレクトし、メッセージ (...「処理中」...) を表示してから、ページが読み込まれるフォーム ページにリダイレクトして、ダウンロードを求めることをお勧めします。をクリックしてから、フォームを再度表示します。

于 2012-09-10T13:55:44.563 に答える