2012-05-16 13 views
6

मेरे पास एक लिंक है और जब उपयोगकर्ता उस पर क्लिक करता है, तो उसे एक पीडीएफ मिलता है। JQuery में, मैं पीडीएफ प्राप्त करने के लिए सर्वर पर एक पोस्ट AJAX कॉल बनाते हैं। प्रतिक्रिया एक पीडीएफ है, जिसमें सही सामग्री शीर्षलेख इत्यादि हैं जो आमतौर पर ब्राउज़र को रीडर प्लगइन खोलने का कारण बनती हैं, या उपयोगकर्ता को पीडीएफ को सहेजने की अनुमति देती है। लेकिन मेरे मामले में, यह काम नहीं कर रहा है। क्या डेटा सामग्री प्रकार सेट करने का कोई तरीका है, या सामग्री प्रकार को पीडीएफ में सेट करें?jQuery अजाक्स: पीडीएफ प्रतिक्रिया

मेरे ajax कॉल:

$('#sf_getpdf').click(function() { 

$.ajax({ //create an ajax request to load_page.php 

     type: "POST", 

     url: "index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>", 

     data: 'invoice_id=<?php echo $invoice_id; ?>&sf_token=<?php echo $sf_token ?>', //with the page number as a parameter 

     dataType: "text", //expect html to be returned 


     success: function(msg){ 



      if(parseInt(msg)!=0) //if no errors 

      { 

      document.write(msg) 
      } 

     } 

    }); 

}); 

Firebug, प्रतिक्रिया: Firebug

ब्राउज़र में प्रतिक्रिया ...

response in browser

मैं पहले से ही सर्वर में सामग्री प्रकार सेट करने की कोशिश की , सफलता के बिना:

content-type in server

संपादित करें: ऐसा करने के लिए अजाक्स की आवश्यकता नहीं है।

<a id="adr_stitok" target="_blank" href="index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>&invoice_id=<?php echo $invoice_id; ?>&sf_token=<?php echo $sf_token ?>" >Download</a></td> 

यह काम करेगा।

+1

document.write() की तरह इस्तेमाल किया जा करने के लिए नहीं है। आप उपयोगकर्ता को केवल एक नए पेज पर भेजना बेहतर कर रहे हैं। – Corbin

+0

अहह, मैं बेवकूफ हूँ। Download मुझे ऐसा करने के लिए AJAX की आवश्यकता नहीं है। :) – Adrian

+2

आप पीडीएफ लिंक को हाइपरलिंक क्यों नहीं करते हैं? या फॉर्म के माध्यम से एक पोस्ट अनुरोध करते हैं? – John

उत्तर

5

सुनिश्चित करें कि आपके सर्वर साइड की ओर से एक downloadeable सामग्री रहो और एक फाइल करने के लिए प्रस्तुत करना, की तरह कुछ:

  //$.download('path', 'data' [, 'post']) 
      $.download = function(url, data, method) { 
       //url and data options required 
       if(url && data) { 
        var form = $('<form />', { action: url, method: (method || 'get') }); 
        $.each(data, function(key, value) { 
         var input = $('<input />', { 
          type: 'hidden', 
          name: key, 
          value: value 
         }).appendTo(form); 
        }); 
       return form.appendTo('body').submit().remove(); 
       } 
      throw new Error('$.download(url, data) - url or data invalid'); 
      }; 

$.download("index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>", {}, 'post') 
0

यह काम नहीं करेगा क्योंकि AJAX कॉल पीडीएफ नहीं लाती है और इसे ब्राउज़र के अंदर लोड नहीं करती है। यही कारण है कि इसे XMLHttpRequest कहा जाता है .. यह केवल टेक्स्ट का आदान-प्रदान करता है!

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