フォームを動的に作成し、サーバー側コントローラーに送信して、データベースにクエリを実行し、csv ファイルを返すことができる状況があります。ユーザーが送信ボタンを押したり、ファイルを取り戻すために 10 回のリクエストを送信したりできないように、オーバーレイを配置できるようにする必要があります。
このため、ajax を使用すると、ブラウザが自動的に検出してユーザーにダウンロードを求めるファイルを送り返すことができないため、ajax を使用できません。
showSpinner();
var $form = $("<form/>")
.addClass("hidden")
.attr("accept", "application/json")
.attr("action", "/myPath")
.attr("method", "POST")
.appendTo("body");
$form.bind('ajax:complete', function() {
hideSpinner();
});
$form.submit();
「ajax:complete」は、運が悪かっただけのことでした。また、.submit() の直後に hideSpinner を配置してみました。しかし、 .submit() は非同期のように見えるため、スピナーがすぐに非表示になります。