下载文件时指示在浏览器中加载

时间:2011-09-13 08:43:08

标签: java javascript jsp servlets

在我们的Web应用程序中,我们有大量的附件,一些是静态的(来自数据库)和一些动态的(生成的),一些生成的文件需要很长时间(Content-Disposition: Attachment) 下载,用户有时会点击。一旦文件实际提供给浏览器,有没有显示和隐藏加载器?

我在stackoverflow上找了类似的问题,但是没有一个有用的答案:example

这是一个可行的问题,还是我应该尝试提高文件的生成速度?

3 个答案:

答案 0 :(得分:4)

为此您可以使用此社区中的以下帖子: -

JavaScript/jQuery to download file via POST with JSON data

使用我首先提到的javascript post方法。 希望这最终能回答你的问题。 :)

答案 1 :(得分:2)

您可以使用ajax代码进行表单提交。当服务器处理请求时,在页面顶部显示带有加载图标的div。

在jsp中编写以下代码。

<div  id="submitPage">
  <img src="/images/loading.gif" alt="">Submitting order...
</div>

最初使用此代码隐藏它

$('#submitPage').hide();

点击提交按钮即可显示。

$('#submitPage').show();

当ajax响应到来时再次隐藏它。

希望它能解决你的问题。

此致 LAV

答案 2 :(得分:2)

您无需再次加载页面。只需使用一些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();

    }
}