2012-12-13 12 views
6

Sto usando il file jquery scaricare ..

il codice è il seguente:

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

Questo è quello che sto facendo a fare clic sul pulsante

Quando clicco sul pulsante, preparandoMessaggioHtml: "Stiamo preparando il tuo rapporto, per favore aspetta ...", viene mostrato in una finestra di dialogo ... Il problema è che questo dia scatola di registro non spegnersi dopo il fle completa la sua preparazione e devo chiudere manualmente ... Come posso farlo andare via quando il file completa la sua preparazione ed è pronto per il download ..

Grazie

risposta

16

al fine di rendere JQuery conosce il download del file appena occurred, il vostro must intestazione di risposta contiene Set-Cookie: fileDownload=true; path=/.

In Java:

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

Grazie dobbiamo impostare i cookie e dire al browser quando il il download del file sta per iniziare – user1899841

+0

Si consiglia di consultare http://stackoverflow.com/questions/21158481/execution-order-of-http-response-headers –

+0

Grazie tu uomo!!!!!! mi hai salvato la vita !! – sergioBertolazzo

3

Ecco il codice sorgente del file di jquery scaricare ..

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

On Successo;

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

In caso di errore

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

Usa "Cache-Control" solo se esiste la volontà anothers richieste.

0

Alcuni browser hanno anche bisogno di resettare la risposta o il download non funzionerà!

response.reset(); 
0

riprova come questo

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

Spero che sia di lavoro per voi ..