2012-12-13 12 views
6

私は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: "私たちはあなたのレポートを準備しています、お待ちください..."というダイアログボックスが表示されます... この問題は、 FLEはそのが準備完了後にログボックスがオフにならないと私はそれを手動で閉じる必要があります... 私は、ファイルがその準備を完了し、ダウンロードする準備ができたとき、それはオフに行くことができますどのように..

感謝を

ここ

答えて

16

jQueryのちょうど発生しましたファイルのダウンロードを知っているようにするために、あなたのレスポンスヘッダ必見Set-Cookie: fileDownload=true; path=/が含まれています。 Javaでは

:成功事例のオン

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

ありがとうファイルのダウンロードが開始されます – user1899841

+0

http://stackoverflow.com/questions/21158481/execution-order-of-http-response-headers –

+0

ありがとうございますあなた!!!!!!あなたは私の人生を救う! – sergioBertolazzo

3

は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> 
1

。エラー

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

使用 "のCache-Control" で

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

意志がanothers要求が存在する場合にのみ。

0

ブラウザによっては、応答をリセットする必要がある場合や、ダウンロードが機能しない場合があります。

response.reset(); 
0

このから

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; 
     } 
    } 

Referanceのようにしてみてください:私たちはクッキーを設定したときに、ブラウザに指示する必要があり、私はそれがあなたのために働く願っていhttps://www.experts-exchange.com/questions/28713105/Jquery-fileDownload-successcallback-not-working.html

..

関連する問題