2012-12-13 18 views
6

ich jquery Datei herunterladen bin mit ..

der Code wie folgt:

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

Das ist, was ich auf Taste tue

klicken

Wenn ich auf der Schaltfläche klicken, wird die preparingMessageHtml: „Wir Bericht vorbereiten, bitte warten ...“, wird in einem Dialogfeld angezeigt ... das Problem ist, dass dieses dia Log-Box geht nicht ab, nachdem das fle seine vervollständigt die Vorbereitung und ich muss es manuell schließen ... Wie kann ich es machen gehen aus, wenn die Datei, um ihre Vorbereitung abgeschlossen und steht zum Download bereit ..

Dank

Antwort

16

um die Datei-Download nur ocurred, Ihre Antwort-Header muss enthält Set-Cookie: fileDownload=true; path=/ zu machen JQuery kennt.

In Java:

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

Thanx müssen wir die Cookies und den Browser sagen, wenn die Datei herunterladen wird starten – user1899841

+0

Sie möchten vielleicht http://stackoverflow.com/questions/21158481/execution-order-of-http-response-headers –

+0

Vielen Dank du Mann!!!!!! du rettest mein Leben!! – sergioBertolazzo

3

Hier Quellcode jquery Datei herunterladen ..

$(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

auf Erfolg;

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

auf Fehler

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

Use "Cache-Control" nur, wenn Wille vorhanden ist anothers Anfragen.

0

Bei einigen Browsern müssen Sie auch die Antwort zurücksetzen oder Ihr Download funktioniert nicht!

response.reset(); 
0

versuchen Sie es wie diese

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 aus: https://www.experts-exchange.com/questions/28713105/Jquery-fileDownload-successcallback-not-working.html

Ich hoffe, es ist Arbeit für Sie ..