のようなダウンロードリンクを踏んだときに
レスポンスが戻ってきたタイミングに処理を実行するにはどうすればいいのでしょうか
サーバー側でダウンロードデータを用意するのに時間がかかる場合に
クリック時とレスポンスが戻ってきたタイミングで何かしら indicator の表示を更新したいです
アップロードの場合は remote:true にしてレスポンスに JS をかえせば
終了時に勝手に実行してくれるので楽なんですが
ダウンロードの場合レスポンスはデータそのもののに使われるのでどうしたらいいのかわからないです
追記:
とりあえず ajax を使うしかないと思うのでためしに
$(function () { $(".download-button").click(function() { $.ajax({ type: "POST", url: $(this).attr('href'), data: { 'params[:download_param][]' : '1', authenticity_token : $("meta[property='csrf-token']").attr('content') }, }) .always( (data) => { alert('complete'); }); }); });
のようにかいてみたんですが Rails のコントローラーに download_param がとんできません…
もともとのリンクは
<a class="btn btn-default download-button" rel="nofollow" data-method="post" href="/users/download.zip?locale=ja&download_param=1">zip</a>
となっていてこれをクリックすればとりあえずダウンロードはできていたんですが
CRSFトークンを自分でつけなければいけないので数時間はまって
まだ結果をどうやってダウンロードリンクにみせるのかもわからないし…
前途多難すぎる…
意外とすぐできそうな内容が思った以上に大変なんですね…