AJAX

2009-03-23 10 views
5

के माध्यम से सीएसवी डाउनलोड करना क्या आप वेब अनुप्रयोग से जेनरेट की गई सीएसवी फ़ाइल डाउनलोड करने के लिए AJAX का उपयोग कर सकते हैं? यदि ऐसा है तो किसी के पास कोई भी संदर्भ है जिसके बारे में मुझे इशारा किया जा सकता है?AJAX

संपादित करें: क्षमा करें मुझे यह उल्लेख करना चाहिए था कि मैं प्रोटोटाइप के अजाक्स का उपयोग कर रहा हूं। अनुरोध और मैंने फायरबग के प्रतिक्रिया उपकरण में देखा और उत्पन्न सीएसवी प्रतिक्रिया है, मुझे बस इसे सहेजने के बाद फ़ाइल फ़ाइल विकल्प के साथ पॉप अप करने की आवश्यकता है Ajax.Request

उत्तर

1

अपने नवीनतम संपादन के प्रकाश में, अपनी सीएसवी फ़ाइल को फ़ाइल डाउनलोड (ब्राउज़र में प्रतिपादन करने के बजाय) को ट्रिगर करने के लिए, अजाक्स की आवश्यकता नहीं है।

इसके बजाय, समाधान जब CSV फ़ाइल अनुरोध किया जाता है अपने बैक-एंड सिस्टम इस HTTP शीर्ष लेख जोड़ने के लिए है:

Content-disposition: attachment; filename=<your_filename.csv>; 

यहां दिखाई देने वाले कार्यान्वयन बैक-एंड सिस्टम प्रयोग कर रहे हैं पर निर्भर करता है। आप रेल (तरह अपना उपयोगकर्ता नाम पता चलता है) का उपयोग कर रहे हैं, तो यहाँ एक शुरुआत है:

filename = 'your_filename.csv' 
headers['Content-Type'] = 'text/plain' 
headers['Content-Disposition'] = "attachment; filename=\"#{filename}\"" 
render :layout => false 
+0

हम सीएसवी की पीढ़ी के दौरान एक लिंक छिपाने के लिए AJAX का उपयोग कर रहे हैं, AJAX के बिना फ़ाइल डाउनलोड करना कोई समस्या नहीं है और एप्लिकेशन द्वारा पहले से ही किया जा रहा है, हमें उपयोगकर्ताओं को लिंक पर क्लिक करने से रोकने के लिए एक लिंक छिपाना होगा एक बार। – nitecoder

+0

$ ('# link') का उपयोग करने का प्रयास करें। (Function() {$ (this) .hide()} पर क्लिक करें); – SeanJA

+0

जाहिर है कि यह $ (यह) होना चाहिए .remove(); – SeanJA

0

डाउनलोड कर रहा है यह समस्या नहीं है; आप XmlHttpRequest के माध्यम से अपनी पसंद के किसी भी डेटा को डाउनलोड कर सकते हैं। कठिन हिस्सा इसे पार्स कर रहा है। रेगेक्स से लेकर स्ट्रिंग इंडेक्सिंग तक इसे पार्स करने के कई तरीके हैं।

0

आप .. कुछ भी डाउनलोड करने के लिए "अजाक्स" का उपयोग कर सकते कुछ लोग कह सकते हैं कि आप इसे AJAX नहीं बुलाना चाहिए कि इस मामले में, क्योंकि यह शब्द कड़ाई से एक्सएमएल को डाउनलोड करने के लिए समर्पित है। लेकिन वास्तव में यह पृष्ठ को पुनः लोड करने के लिए क्लाइंट w/o में डेटा प्राप्त करने के लिए एक तंत्र है। यदि आप एचटीएमएल लोड कर रहे थे तो इसे एएचएएच कहा जाएगा, सीएसवी के लिए मुझे लगता है कि आप इसे एएचएसी या एजेएसी कहते हैं? एक Ajax अनुरोध उपयोग करने के बजाय

window.location='download-csv.rb'; 

: ..

3

यह है अजाक्स अनुरोधों का एक ज्ञात सीमा, आप की तरह जे एस का उपयोग करने की आवश्यकता होगी। एक और तरीका एक छिपे हुए इफ्रेम के स्थान को बदलना है, लेकिन इसमें इसका स्वयं का प्रो/कॉन है।

आपको 'फ़ाइल सेव' संवाद प्रदर्शित करने के लिए कभी भी अजाक्स अनुरोध नहीं मिलेगा, इससे कोई फर्क नहीं पड़ता कि आप कौन सी HTTP शीर्षलेख भेजते हैं।