2012-12-13 18 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; 
} 

यह क्या मैं क्लिक

बटन पर कर रहा हूँ है

जब मैं बटन पर क्लिक करता हूं, तैयारी मैसेज एचटीएमएल: "हम आपकी रिपोर्ट तैयार कर रहे हैं, कृपया प्रतीक्षा करें ...", एक संवाद बॉक्स में दिखाया गया है ... समस्या यह है कि यह दीया लॉग बॉक्स से बाहर जाने नहीं है के बाद fle इसकी तैयारी कर पूरा करता है और मैं इसे मैन्युअल रूप से बंद करने के लिए है ... मैं कैसे इसे बंद कर जाना है जब फ़ाइल इसकी तैयारी पूरा करता है और डाउनलोड करने के लिए तैयार है बना सकते हैं ..

धन्यवाद

उत्तर

16

आदेश jQuery जानता है सिर्फ हुई फ़ाइल डाउनलोड करने के लिए, अपनी प्रतिक्रिया हेडर चाहिए Set-Cookie: fileDownload=true; path=/ शामिल हैं।

जावा में:

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

Thanx हम कुकी सेट करने की है और ब्राउज़र बता जब फ़ाइल डाउनलोड – 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=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"); 

उपयोग "कैश-नियंत्रण" केवल तभी इच्छा दूसरे के अनुरोध से मौजूद है।

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

सन्दर्भ तरह का प्रयास करें: .. https://www.experts-exchange.com/questions/28713105/Jquery-fileDownload-successcallback-not-working.html

मुझे आशा है कि यह आप के लिए काम है

संबंधित मुद्दे