【问题标题】:Jquery File download ($.fileDownload)Jquery 文件下载 ($.fileDownload)
【发布时间】:2012-12-13 05:04:42
【问题描述】:

我正在使用 jquery 文件下载..

代码如下:

 function downloadFile(){
var downloadOptions = {
preparingMessageHtml: "We are preparing your report, please wait...",
failMessageHtml: "No reports generated. No Survey data is available."
                  };

     $.fileDownload("displaySurveyReport.action",downloadOptions);
return false; 
}

这就是我在点击按钮时所做的事情

当我单击按钮时,preparingMessageHtml:“我们正在准备您的报告,请稍候...”,显示在对话框中... 问题是文件完成准备后此对话框不会关闭,我必须手动关闭它... 当文件完成准备并准备下载时,我怎样才能让它消失..

谢谢

【问题讨论】:

    标签: jquery download


    【解决方案1】:

    为了让 JQuery 知道刚刚发生的文件下载,您的响应标头必须包含 Set-Cookie: fileDownload=true; path=/

    在 Java 中:

    response.setHeader("Set-Cookie", "fileDownload=true; path=/");
    

    【讨论】:

    • 感谢我们必须设置 cookie 并告诉浏览器何时开始下载文件
    • 在asp.net mvc C#中我用过:Response.AppendHeader("Set-Cookie", "fileDownload=true; path=/");
    【解决方案2】:

    这里是jquery文件下载的源代码..

    $(function () {
        $(document).on("click", "a.fileDownloadCustomRichExperience", function () {
    
            var $preparingFileModal = $("#preparing-file-modal");
    
            $preparingFileModal.dialog({ modal: true });
    
            $.fileDownload($(this).attr('href'), {
                successCallback: function (url) {
    
                    $preparingFileModal.dialog('close');
                },
                failCallback: function (responseHtml, url) {
    
                    $preparingFileModal.dialog('close');
                    $("#error-modal").dialog({ modal: true });
                }
            });
            return false; //this is critical to stop the click event which will trigger a normal file download!
        });
    });
    
    <div id="preparing-file-modal" title="Preparing report..." style="display: none;">
        We are preparing your report, please wait...
    
        <div class="ui-progressbar-value ui-corner-left ui-corner-right" style="width: 100%; height:22px; margin-top: 20px;"></div>
    </div>
    
    <div id="error-modal" title="Error" style="display: none;">
        There was a problem generating your report, please try again.
    </div>
    

    【讨论】:

      【解决方案3】:

      成功;

      response.setHeader("Set-Cookie", "fileDownload=true; path=/");
      response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
      

      出错

      response.setHeader("Set-Cookie", "fileDownload=false; path=/");
      response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
      

      仅当存在其他请求时才使用“Cache-Control”。

      【讨论】:

        【解决方案4】:

        某些浏览器还需要您重置响应,否则您的下载将无法正常工作!

        response.reset();
        

        【讨论】:

          【解决方案5】:

          请这样尝试

          function exportToExcelTest() {
                  var region = $('#ddlRegion').val();
                  var hrinfo = $('#hrinfodropdown').val();
                  if (region != null) {
                      $('#ExportOptions').modal('hide');
                      $.blockUI({ message: '<h1>Please wait generating excel data...</h1>' });
                      //$.blockUI({ message: '<h1><img src="../Images/ajax_loader_blue_350.gif" /> Just a moment...</h1>' });
                      $.blockUI({ css: { backgroundColor: '#f00', color: '#fff'} });
                      var myData = region + ':' + hrinfo;
          
                      $.fileDownload('Excel.ashx', {
                          httpMethod: "POST",
                          data: { data: myData },
                          successCallback: function (url) {
                              //$("div#loading").hide();
                              //alert('ok');
                              //response.setHeader("Set-Cookie", "fileDownload=false; path=/");
                              $.unblockUI();
                          },
                          prepareCallback: function (url) {
                              //alert('ok');
                              //response.setHeader("Set-Cookie", "fileDownload=true; path=/");
                              $.unblockUI();
                          },
                          failCallback: function (responseHtml, url) {
                              //alert('ok');
                              // $("div#loading").hide();
                              // alert('Error while generating excel file');
                              //response.setHeader("Set-Cookie", "fileDownload=false; path=/");
                              $.unblockUI();
                          }
                      });          
                  }
                  else {
                      alert('Please select a region....');
                      return false;
                  }
              }
          

          引用自:https://www.experts-exchange.com/questions/28713105/Jquery-fileDownload-successcallback-not-working.html

          我希望它对你有用..

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-11-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-03
            • 2010-11-20
            • 1970-01-01
            • 2021-12-18
            相关资源
            最近更新 更多