私はウェブ上のネイティブExcelファイルを生成するPHPファイルへのリンクをWebブラウザに直接出力します。ファイルの生成には時間がかかるので、jQuery Ajaxを使用して呼び出しを行い、途中でいくつかの読み込みアニメーションを使用したいと思います。jquery ajaxコールの後にブラウザにファイルを出力する方法
Ajaxコール後にファイルをブラウザに出力する方法がわかりません。それも可能ですか?
私はウェブ上のネイティブExcelファイルを生成するPHPファイルへのリンクをWebブラウザに直接出力します。ファイルの生成には時間がかかるので、jQuery Ajaxを使用して呼び出しを行い、途中でいくつかの読み込みアニメーションを使用したいと思います。jquery ajaxコールの後にブラウザにファイルを出力する方法
Ajaxコール後にファイルをブラウザに出力する方法がわかりません。それも可能ですか?
(NBといくつかの技術があるにも
window.location = fileUrl
を呼び出しますこれは、@ドミトリーの答えの言い換えですが、ちょっと手を加えました)
問題は、AJAX経由で直接ファイルをユーザーに返す手段がないことです。ファイルは通常の同期HTTPリクエストを使用しています。この問題を解決するには
、あなたのPHPがする必要があります。通常のようにExcelファイルを生成します
file_put_contents()
などを使用)。:
window.open()
を使用して新しいタブ/ウィンドウでExcelファイルを開く(または現在のタブ/ウィンドウでlocation.href
に設定してリダイレクトする)。エクセルファイルを生成する実際のPHPファイルをロードするiframeを使用しないのはなぜですか?そうすれば、ファイルが生成されている間にUIをブロックせず、ブラウザがダウンロードダイアログを起動します。
少なくともブラウザがダウンロードダイアログを開くようにするのではなく、JavaScriptを使用してファイルを送信する方法はありません。
私はあなたがトリックを作ることができると思います。ファイルを生成して、Ajaxのレスポンスで生成されたファイルへのパスを返し、その後、ちょうどiframeのアヤックス
リンクをクリックして「ファイルが生成されている間お待ちください」などのメッセージを表示すると、リンクが非アクティブになるのはどうですか?この方法で、ユーザーにフィードバックを提供します。 –