所以在我的页面上,我有一个按钮,用户可以将数据导出到EXCEL / PDF。它的工作方式是点击按钮,然后我将数据发送到提交请求的隐藏表单。请求完成后,它将返回用户选择的文档类型的内容,该内容将提示"另存为"对话。
<form id="export-form" action="laravel-excel.php" method="POST" target="hidden-form">
<input type="hidden" name="type" value="{{header.export.type}}" />
<input type="hidden" name="name" value="{{header.export.name}}" />
<input type="hidden" name="data" value="{{header.export.data}}" />
</form>
<iframe style="display:none" name="hidden-form"></iframe>
所以一切正常!但是,我想添加一个加载器让人们知道文件正在处理,当它完成时,我想隐藏它。根据我的研究,我无法找到适用于表单的解决方案。我找到的解决方案是通过AJAX进行处理的方式,如下所示:
$('#export-form').ajaxForm({
success: function (response, status, request)
{
var disp = request.getResponseHeader('Content-Disposition');
if (disp && disp.search('attachment') != -1)
{
var type = request.getResponseHeader('Content-Type');
var blob = new Blob([response], { type: type });
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
window.location = downloadUrl;
}
}});
那里有更好的解决方案吗?