दिलचस्प पोस्ट
Win32 प्रोग्रामिंग छिपाने कंसोल खिड़की सी की जाँच करें सी में एक स्ट्रिंग में मौजूद है स्ट्रिप बाइट ऑर्डर मार्क स्ट्रिंग से सी # SceneBuilder 2.0 के लिए एक कस्टम घटक जोड़ना Moq के साथ विस्तार विधियों का मजाक उड़ाका क्या मोनाद बाइंड (= =) ऑपरेटर फ़ंक्शन संरचना (चेनिंग) या फ़ंक्शन एपशन के करीब है? विभिन्न प्रकार की अन्य संस्थाओं के लिए एक संस्था का आईडी पुन: उपयोग करना – समझदार विचार? कौन सी HTML, और XML, विशेष वर्ण हैं? SQLAlchemy मैप किए गए ऑब्जेक्ट से तालिका गुणों को कैसे खोजें मणि स्थापित करने के लिए कैसे – non-ri –no-rdoc डिफ़ॉल्ट बनाने के लिए? जावास्क्रिप्ट चर परिभाषा: कॉमस बनाम सेमीकॉलन लचीला खोज ल्यूसीन संस्करण त्रुटि संग्रह कैसे करता है। वेबएक्साशन कैसे एक शरीर के साथ पूरी प्रतिक्रिया पाने के लिए? एंड्रॉइड नेस्टेड सूचीदृश्य

एक फ़ाइल डाउनलोड करने के लिए jQuery और आइफ्रेम का उपयोग करना

मेरे पास एक .csv फ़ाइल डाउनलोड करने के लिए निम्न कोड है:

$.ajax({ url: urlString, contentType: "application/json; charset=utf-8", dataType: "json", cache: false, success: function (data) { if (data) { var iframe = $("<iframe/>").attr({ src: data, style: "visibility:hidden;display:none" }).appendTo(buttonToDownloadFile); } else { alert('Something went wrong'); } } }); 

UrlString एक निस्संदेह सेवा की ओर इशारा कर रहा है जो। Csv फ़ाइल उत्पन्न करती है और फ़ाइल पथ लौटाती है जिसे आइफ्रेम के लिए src विशेषता को सौंपा गया है। यह किसी भी .csv फ़ाइलों के लिए काम करता है, लेकिन मुझे .xml फ़ाइलों के साथ समस्या हो रही है जब मैं एक ही कोड का उपयोग करता हूं लेकिन "टेक्स्ट / एक्सएमएल" पर contentType बदल रहा हूं और इसे .xml फ़ाइलों को डाउनलोड करने के लिए उपयोग करें, जो यह काम नहीं कर रहा है।

क्या मैं .xml फ़ाइलों के लिए यहां एक समान दृष्टिकोण का उपयोग कर सकता हूं?

अद्यतन करें:

मुझे सही दिशा में इंगित करने के लिए बेन के लिए धन्यवाद यह पता चला है कि मुझे एजेक्स कॉल की ज़रूरत नहीं है। इसके बजाय, मैं वेब सेवा को कॉल करने के लिए सिर्फ आईफ्रेम और उसके यूआरएल विशेषता का उपयोग कर सकता हूं, जो सामग्री उत्पन्न करेगा, शीर्षलेख ( Content-Disposition ) जोड़ देगा, और धारा वापस करेगा।

Solutions Collecting From Web of "एक फ़ाइल डाउनलोड करने के लिए jQuery और आइफ्रेम का उपयोग करना"

मैं यह अनुमान लगा रहा हूं कि समस्या यह है कि अधिकांश ब्राउज़र ब्राउज़र में एक्सएमएल को प्रस्तुत करने का प्रयास करेंगे, जबकि वे सीएसवी के लिए कोई हैंडलर नहीं रखते हैं, इसलिए उपयोगकर्ता को फ़ाइल डाउनलोड करने के लिए संकेत देने के लिए वे स्वत: डिफ़ॉल्ट होंगे। डाउनलोड को लागू करने के लिए XML फ़ाइल के हेडर संशोधित करने का प्रयास करें। ऐसा कुछ (PHP उदाहरण):

 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition: attachment; filename="some filename"'); 

यह सबसे ब्राउज़रों को फ़ाइल को खोलने का प्रयास न करने के लिए कहना चाहिए, लेकिन इसके बजाय उपयोगकर्ता फ़ाइल को डाउनलोड करने के लिए और OS को इसके साथ क्या करना है यह निर्धारित करने दें।

यदि आपके पास XML फ़ाइल में हेडर को नियंत्रित करने की कोई शक्ति नहीं है, तो आप एक सर्वर-साइड स्क्रिप्ट का उपयोग कर एक कार्य-आसपास की कोशिश कर सकते हैं। सर्वर-साइड स्क्रिप्ट में यूआरएल को पास करने के लिए जेएस का उपयोग करें:

 //build the new URL var my_url = 'http://mysite.com/load_file_script?url='+escape(path_to_file); //load it into a hidden iframe var iframe = $("<iframe/>").attr({ src: my_url, style: "visibility:hidden;display:none" }).appendTo(buttonToDownloadFile); 

और सर्वर-साइड पर (आपकी http://mysite.com/load_file_script स्क्रिप्ट) आप cURL / file_get_contents / wgets / [दूरस्थ फ़ाइलों को प्राप्त करने की कुछ अन्य तंत्र] का उपयोग दूरस्थ फ़ाइल की सामग्री को प्राप्त करने के लिए करते हैं, Content-Disposition: attachment जोड़ें Content-Disposition: attachment हेडर, और मूल फ़ाइल का कोड print करें।

आप इसे आभासी लंगर तत्व से एक डाउनलोड के रूप में भी प्रदान कर सकते हैं, भले ही डाटा क्लाइंट-साइड हो:

 /* * Create an anchor to some inline data... */ var url = 'data:application/octet-stream,Testing%20one%20two%20three'; var anchor = document.createElement('a'); anchor.setAttribute('href', url); anchor.setAttribute('download', 'myNote.txt'); /* * Click the anchor */ // Chrome can do anchor.click(), but let's do something that Firefox can handle too // Create event var ev = document.createEvent("MouseEvents"); ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null); // Fire event anchor.dispatchEvent(ev); 

http://jsfiddle.net/D572L/