其实是一个简单的任务,但我只是找不到合适的解决方案
不幸的是我无法让它工作,要么动画正常工作但下载仅短暂“闪烁”,或者下载正确显示但动画重置不起作用。
我已经在这里阅读了很多相关内容,但不幸的是它并没有真正起作用,也许有人可以提供帮助?
非常感谢您的努力! 我现在找到了解决办法:
$(document).ready(function () {
function showLoading() {
$('#waitinginfo').fadeIn();
}
function hideLoading() {
$('#waitinginfo').fadeOut();
}
$("#frmexport").submit(function (event) {
var formData = new FormData(this);
showLoading();
$.ajax({
type: "POST",
url: "testdownload",
data: formData,
success: function (response) {
hideLoading();
var blob = new Blob([response], { type: 'application/octet-stream' });
var downloadLink = $("<a>")
.attr("href", window.URL.createObjectURL(blob))
.attr("download", "generated-file.txt")
.text("Datei herunterladen");
$("body").append(downloadLink);
downloadLink[0].click();
downloadLink.remove();
},
error: function (error) {
console.error("Error: ", error);
}
});
event.preventDefault();
});
});
技巧在于创建后,会在应用点击事件的 DOM 中创建一个“虚拟”a 标签。由于代码最终是在 MVC .NET Core 应用程序中动态生成的,因此
type: 'application/octet-stream'
和 .attr("download", "generated-file.txt")
相应地动态放置在脚本中。