2011-09-15 10 views
5

私はウェブ上のネイティブExcelファイルを生成するPHPファイルへのリンクをWebブラウザに直接出力します。ファイルの生成には時間がかかるので、jQuery Ajaxを使用して呼び出しを行い、途中でいくつかの読み込みアニメーションを使用したいと思います。jquery ajaxコールの後にブラウザにファイルを出力する方法

Ajaxコール後にファイルをブラウザに出力する方法がわかりません。それも可能ですか?

+0

リンクをクリックして「ファイルが生成されている間お待ちください」などのメッセージを表示すると、リンクが非アクティブになるのはどうですか?この方法で、ユーザーにフィードバックを提供します。 –

答えて

3

NBといくつかの技術があるにも

window.location = fileUrl 

を呼び出しますこれは、@ドミトリーの答えの言い換えですが、ちょっと手を加えました)

問題は、AJAX経由で直接ファイルをユーザーに返す手段がないことです。ファイルは通常の同期HTTPリクエストを使用しています。この問題を解決するには

、あなたのPHPがする必要があります。通常のようにExcelファイルを生成します

  1. ファイルをユーザーに書き戻す代わりに、サーバーのファイルシステムのどこかに保存します(file_put_contents()などを使用)。
  2. ファイルパスをユーザーに返します。あなたのJSは、この応答を受けた上で、その後に必要になります

  1. はバックPHPスクリプトからExcelファイルのパスをお読みください。
  2. window.open()を使用して新しいタブ/ウィンドウでExcelファイルを開く(または現在のタブ/ウィンドウでlocation.hrefに設定してリダイレクトする)。
0

エクセルファイルを生成する実際のPHPファイルをロードするiframeを使用しないのはなぜですか?そうすれば、ファイルが生成されている間にUIをブロックせず、ブラウザがダウンロードダイアログを起動します。

少なくともブラウザがダウンロードダイアログを開くようにするのではなく、JavaScriptを使用してファイルを送信する方法はありません。

1

私はあなたがトリックを作ることができると思います。ファイルを生成して、Ajaxのレスポンスで生成されたファイルへのパスを返し、その後、ちょうどiframeのアヤックス

関連する問題