jquery - 下载文件时如何显示和删除正在加载的 .gif?

标签 jquery ajax

我有一个按钮,单击该按钮后,需要通过使用 POST 提交表单来下载文件。 [编辑澄清:正在下载的文件是通过 PHP 脚本根据隐藏表单中的值动态生成的(我通过 jQuery 进行更改,具体取决于单击的按钮)。相关文件是 Excel 文件。如果可能的话,我不想使用 GET,因为我不希望人们直接链接到该文件。]

我无法使用 $.post 提交表单,因为这不能按我希望的方式工作。虽然提交顺利,但它不会触发浏览器中的下载对话框。据我了解,该文件的内容现在存在于 JavaScript 中,并且(据我所知)没有办法允许您将其从 JavaScript 发送到浏览器进行下载。因此,其他解决方案(例如 How do I use jQuery or Ajax to swap the background image after a form is submitted? )在这种特殊情况下不起作用。

解决方案I found是使用 $("#someform").submit(); 在单击按钮时触发隐藏表单。页面不会重新加载,屏幕上会弹出保存对话框。

示例代码:

$( "#button" ).click(
    function() {
        $(this).removeClass( "button" );
        $(this).addClass( "loading" );
        $( "#form" ).submit();  
    }
);

但是,由于生成文件可能需要几秒钟的时间,因此我想向用户显示加载动画 gif。现在出现的问题是我可以显示动画,但在提交表单后无法删除动画。

如果使用此方法无法完成,是否有人可以建议更好的解决方案?

最佳答案

您应该提供 .gif 的 URL 或将其编码为 Base64 进行流式传输

关于jquery - 下载文件时如何显示和删除正在加载的 .gif?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7283058/

相关文章:

javascript - 使用 Parsley.js 验证选择的多项选择

javascript - 当错误时notify.js不显示通知

javascript - Rails 4 Flot 未捕获类型错误和错误显示

javascript - 用于选择 DOM 元素的非特定 JS

javascript - 如何检测默认下拉选项与使用 js/jquery 选择的选项?

javascript - $.inArray 只检查 jQuery 中数组的最后一个索引

jquery - 经过身份验证的用户从 jQuery 向 Rails API 发出 AJAX 请求

php - 评论专家意见的jquery动态分页

javascript - PHP foreach 与通过 AJAX 发送的多维数组的怪异

javascript - 如何在无限滚动加载新页面后请求类似 Tumblr 的按钮状态