前提・実現したいこと
「ダウンロード」ボタンをクリックした際に、その前後での「事前処理」および「事後処理」を実行したうえで、ファイルをダウンロードしたいのです。
発生している問題・エラーメッセージ
下記にHTMLとjQueryのソースがありますが、1つ目のjqueryでは「ダウンロードはできるが、事前処理/事後処理は行われない(すっ飛ばされる)」状態になります。
一方の2つ目のjqueryでは、「事前処理/事後処理はきっちり行われ、ダウンロードのデータも取得できるが、それを保存する手段が分からない」状態です。
該当のソースコード
HTML
1<button type='button' class='btn btn-success download' 2 data-url='<ダウンロードを行うリンク>'>ダウンロード</button>
jQuery
1//1 これだと「事前処理」「事後処理」がすっ飛ばされるが、ダウンロードは可能 2$(document).on ("click", ".download", (event) => { 3 <事前処理> 4 location.href = $(event.currentTarget).data ("url"); 5 <事後処理> 6});
jQuery
1//2 これだと「事前処理」「事後処理」は実行されるが、現状ではダウンロード不可 2$(document).on ("click", ".download", (event) => { 3 $.ajax({ 4 <事前処理> 5 url: $(event.currentTarget).data ("url"), 6 type: 'get', 7 timeout: 10000, 8 9 success: (content, textStatus, xhr) => { 10 //このalertで、ダウンロードしたデータは確認済み 11 alert (content); 12 13 //恐らくここに、ダウンロードしたデータを保存する処理を記述? 14 15 <事後処理> 16 } 17 }); 18});
試したこと
2つ目のjQueryソースのコメントに記載した通り、Ajax通信で取得したデータはalertで表示できています。
これをどのようにしてクライアント側に保存(ダウンロード)させるか、もしご存じの方がいらっしゃったら是非ご教示いただけませんでしょうか。
補足情報(FW/ツールのバージョンなど)
jQuery 3.4.1
回答1件
あなたの回答
tips
プレビュー