2010-04-28 8 views
5

मैं jquery और asp.net mvc के साथ काफी नया हूं। मेरी समस्या यह है कि मैं एक नियंत्रक में एक विधि बुला रहा हूं जो एक FileStreamResult देता है। यह ठीक काम कर रहा है, लेकिन जब मैं इसे jQuery पोस्ट के साथ बुला रहा हूं तो यह काम नहीं करता है। मैं बनाम डीबग टूल के साथ देख सकता हूं कि प्रोग्राम विधि का पता लगा रहा है। क्योंकि मुझे लगता है कि इसके साथ कुछ करने के लिए मेरे jQuery कॉल को वापसी पैरामीटर का ख्याल रखना चाहिए? Somenoe?फ़ाइलस्ट्रीम रीसेट के साथ jQuery पोस्ट वापसी मूल्य

jQuery कोड:

public ActionResult DownloadAsPowerpoint() 
    { 
     Stream stream; 
     //... 
     HttpContext.Response.AddHeader("content-disposition", "attachment; filename=presentation.pptx"); 

     return new FileStreamResult(stream, "application/pptx"); 
    } 

कोई समझा सकते हैं और मुझे कुछ उदाहरण कोड दें:

<script type="text/javascript"> 
    function createPPT() { 
      $.post("<%= Url.Action("DownloadAsPowerpoint", "RightMenu")%>"); 
    } 
    </script> 

नियंत्रक में विधि?

+0

क्यों आप इसे एक JavaScript फ़ंक्शन से कॉल करने के लिए की जरूरत है? –

उत्तर

3

उपयोग $ .ajax() विधि, क्योंकि आप किसी भी पैरामीटर न भेजें:

function createPPT() { 
     //Show waiting dialog here 
     $.ajax({ 
      url: '<%=Url.Action("DownloadAsPowerpoint") %>', 
      method:'GET', 
      success: function (fileStream) { 
       //Hide waiting dialog here 
       alert(fileStream); //This is your filestream 
      } 
     }); 
     return false; 
    } 
+0

मैं जो करने की कोशिश कर रहा हूं वह यह है कि मैं एक jQuery संवाद दिखाना चाहता हूं जबकि विधि 'DownloadAsPowerpoint' निष्पादित हो रही है। फ़ंक्शन createPPT() {$ ("# संवाद-पुष्टि")। संवाद ({autoOpen: false, modal: true, resizable: false, closeOnEscape: false, open: function (event, ui) {$ ("। ui-dialog-titlebar-close ") छुपाएं();}}); $ ("# संवाद-पुष्टि करें") संवाद ('खुला')। $। पोस्ट ("<% = Url.Action (" DownloadAsPowerpoint "," राइटमेनू ")%>"); । $ ("# संवाद-पुष्टि करें") संवाद ('पास'); – karl

+0

जैसा कि मैं समझता हूं कि आप पुष्टिकरण संवाद जोड़ने की कोशिश कर रहे हैं, है ना? jQuery संवाद एसिंक को निष्पादित करता है, इसलिए इसे सिंक में निष्पादित करने के लिए थोड़ा मुश्किल है और परिणाम पर क्लिक करें। इसके बजाय पुष्टि फ़ंक्शन का उपयोग करने का प्रयास करें। मैंने पोस्ट संपादित किया। – wassertim

+0

पुष्टि एक बुरा नाम है (कॉपी और पेस्ट)। मैं पॉपअप करने के लिए एक लोडर एनीमेशन के साथ पॉपअप करने के लिए एक संवाद चाहता हूं और फिर जब मेरी नियंत्रक विधि पूरी हो जाती है तो रोगी। तो मुट्ठी मैं एनामिशन के साथ एक div लोड करना चाहता हूँ। तो मैं अपने नियंत्रक विधि को निष्पादित करना चाहता हूं। आखिरकार मैं फाइलस्ट्रीम को दोबारा जोड़ना चाहता हूं और एनीमेशन के साथ div को छिपाना चाहता हूं। – karl

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