在我们的Web应用程序中,我们有大量的附件,一些是静态的(来自DB)和一些动态的(生成的),一些生成的文件需要很长时间(Content-Disposition: Attachment)
下载,用户有时会点击。 一旦文件实际提供给浏览器,有没有显示和隐藏加载器?
我已经在stackoverflow上查找了类似的问题,但是没有一个有用的答案:例如。
这是一个可行的问题,还是我应该尝试提高文件生成的速度?
这是点击链接和生成文件,还是实际下载文件之间的延迟?
这是点击和显示文件下载对话框之间的延迟。
与答案重复:stackoverflow.com/questions/1106377/
为此,您可以使用此社区的以下帖子: -
JavaScript / jQuery通过POST使用JSON数据下载文件
使用我先提到的javascript post方法。
希望这最终能回答你的问题。:)
我将使用此解决方案,感谢您的投入,我为您的所有答案提供帮助,
您无需再次加载页面。 只需使用一些javascript操作来调用ajax调用即可。:)
$('#submitPage').show();
var url ="urlUsed";
$.post(url, $("#formName").serialize() , function(responseValue){
$('#submitPage').hide();
});
如果不是这样,您可以将ajax调用更改为: -
function functionName(){
ajaxRequest = createXMLHttpRequest();
var url ="urlUsed";
$('#submitPage').show();
ajaxRequest.open('get', url , true);
ajaxRequest.onreadystatechange = processAjaxResponseForMethodName;
ajaxRequest.send(null);
}
function processAjaxResponseForMethodName(){
if(ajaxRequest.readyState == 4) {
$('#submitPage').hide();
}
}
它工作(向服务器发出请求并隐藏加载)但文件数据现在位于ajaxRequest.responseText中,并且未"下载"到屏幕下载文件对话框中。 请看这个链接:groups.google.com/group/ajax-world/browse_thread/thread/
您可以使用ajax代码进行表单提交。 当服务器处理请求时,在页面顶部显示带有加载图标的div。
在jsp中写下面的代码。
Submitting order...
最初使用此代码隐藏它
$('#submitPage').hide();
然后点击你的提交按钮就可以了。
$('#submitPage').show();
当ajax响应到来时再次隐藏它。
希望它能解决你的问题。
问候,
盥洗室
谢谢Lav,我试过这个,但发送请求的页面没有重新加载(因此加载不会再次隐藏),并且ajax请求无法启动下载对话框