在我看来,我有一个link_to用于下载excel文件:
<%= link_to 'Download Excel', url_for( :controller => "my_controller", :action => "file", :format => 'xlsx', :params => params ) %>
控制器使用axlsx渲染文件,如:
format.xlsx {
render xlsx: 'file', filename: 'filename', disposition: 'inline'
}
现在生成并返回该文件可能需要一些时间,所以我想告诉用户该网站的工作情况。
我在视图代码中有一个隐藏的div:
<div id="loader"><img src="/assets/loading.gif" ></div>
当有人点击链接时,我可以用这个jQuery显示div:
$('#excel_export').click(function() {
$("#loader").show();
});
我的问题是:文件下载开始时我怎么能.hide()
div?也许是某种类型的ajax回调?
答案 0 :(得分:1)
我不知道这对你有帮助。我发现此代码有助于在执行ajax请求时显示微调器。
$(document)
.ajaxStart(function() {
$("#loader").show();
})
.ajaxStop(function() {
$('#loader').hide();
});
您可以从以下link获取更多样本。
答案 1 :(得分:0)
您可以通过检查下载开始所需的一般时间来使用setTimeout()函数
喜欢这个
$('#excel_export').click(function() {
$("#loader").show();
setTimeout($("#loader").hide();, 1000);
});
因此它会在1000毫秒后自动关闭