使用Javascript下载文件后更改元素

Change element after downloading a file with Javascript

本文关键字:元素 文件 Javascript 下载 使用      更新时间:2023-09-26

我的页面上有一个按钮,可以将当前页面位置设置为在服务器上生成PDF的页面。因为生成和发送文件需要几秒钟的时间,所以我想通知用户他们的点击已经收到并正在处理,所以我在下载过程中添加了一个微调器。

$("#download-pdf-button").click(function() {                        
    // some code to display a spinner
    window.location.href = "/path/to/downloadGeneratingPage";
    // some code to hide the spinner
});

下载工作正常,但按照此代码的执行方式,微调器会立即隐藏。我想找到一种方法,让微调器显示出来,一旦服务器发回请求,微调器就会再次隐藏。

我尝试了一些其他选项,比如使用$.get()并将数据发送到隐藏的iframe,但这不允许我像使用服务器的HTTP响应那样建议文件名(但它确实允许我在希望隐藏微调器时隐藏微调器)。这个名称不是一个大问题(很好),但我至少需要添加扩展,这样用户就可以在不重命名的情况下打开它

基本上我想要的是:

  • 发送请求时显示微调器
  • 在浏览器收到文件后下载文件(如果需要,我可以更改服务器端代码,例如发送不同的HTTP头)
  • 收到文件时隐藏微调器
  • 允许我添加文件扩展名

window.location.href中设置值将卸载当前页面并加载您定义的页面。该语句之后的代码将不会执行。

您可能想要的是一个ajax请求。

//Code to show the spinner
$.ajax( "/path/to/downloadGeneratingPage" ).done( function( data ) {
  //Code to hide the spinner and do something with the data the server sent back
} );