2009-07-02 16 views
15

हमारे AJAX अनुरोध (एक .json प्रतिक्रिया के साथ) में से कुछ के लिए हमारे कुछ ग्राहकों ने शिकायत की है कि वे "फ़ाइल डाउनलोड" प्रॉम्प्ट देख रहे हैं जो उपयोगकर्ता को .json प्रतिक्रिया डाउनलोड करने के लिए कह रहा है । मैं परेशान हूं क्योंकि इस पर विचार करना यह एक एक्सएचआर प्रतिक्रिया है, यह कभी नहीं होना चाहिए। क्या किसी ने इसे देखा है?json xhr प्रतिक्रिया एक डाउनलोड फ़ाइल पॉपअप विंडो खुलती है

धन्यवाद

+0

आप फ़ाइल एक्सटेंशन के रूप में .json क्यों जोड़ते हैं? मुझे लगता है कि आप तब तक ऐसा नहीं कर सकते जब तक कि आप ब्राउज़र को .json फ़ाइल (एफएफ में विकल्पों में जाएं) – nightingale2k1

उत्तर

11

"पाठ/सादे" जवाब में की एक MIME प्रकार निर्दिष्ट करने का प्रयास। या बस यूआरएल से ".json" एक्सटेंशन ड्रॉप करें (उदाहरण के लिए .txt, या .js का प्रयास करें)

+0

के लिए विशिष्ट चीज़ करने के लिए सेट करते हैं और यह सुनिश्चित करने से पहले सुनिश्चित करें कि आप अपने कोड में कहीं और हेडर सेट नहीं कर रहे हैं (यानी , माइम प्रकार को पाठ/सादे के अलावा कुछ और निर्दिष्ट करना)। – jellyfishtree

+0

यह उत्तर मानता है कि आपके पास प्रतिक्रिया पर नियंत्रण है। एक तीसरे पक्ष के डब्ल्यूएस को कॉल करने के बारे में जो जेएसओएन के साथ प्रतिक्रिया करता है, एक सामग्री प्रकार सेट, भगवान forbids, जेसन के साथ? – phtrivier

+0

हां, टेक्स्टटाइप को टेक्स्ट/एचटीएमएल (एप्लिकेशन/जेसन से) में बदलना मेरे लिए काम करता है। मैंने इसके बारे में कुछ और विवरणों के साथ एक ब्लॉग पोस्ट लिखा: http://blog.degree.no/2012/09/jquery-json-ie8ie9-treats-response-as-downloadable-file/ – Andreas

-3

.json ड्रॉप करें और सामग्री प्रकार को टेक्स्ट/html के रूप में सेट करें। आईई नहीं जानता कि आप किस प्रकार की फाइल भेज रहे हैं, इसलिए यह डाउनलोड करने की पेशकश करता है। यह जानता है कि पाठ/एचटीएमएल के साथ क्या करना है :)

+1

नहीं। सेवा न करें पाठ/एचटीएमएल के रूप में जेसन। http://jibbering.com/blog/?p=514 – Cheeso

3

सुनिश्चित नहीं है कि आपको कोई समाधान मिला है, लेकिन मुझे एक ऐसी ही समस्या थी जहां आईई ने किसी भी जेएस प्रतिक्रिया को डाउनलोड करने का प्रयास किया था। इसे ठीक करने के लिए, मुझे यह सुनिश्चित करना था कि format.html प्रतिक्रिया ब्लॉक में format.js से ऊपर दिखाई दे:

def index 

    # ... 

    respond_to do |format| 
    # html must be above js, otherwise IE will try to download the JS 
    format.html 
    format.js 
    end 
end 

आशा है कि इससे मदद मिलती है।

return Json(result, "text/plain"); 

संपादित करें::

+0

यह समाधान मेरे लिए काम करता है। कोई विचार नहीं क्यों (अन्य ब्राउज़रों ने ठीक काम किया)। –

+0

आईई स्वीकार करें: 'स्वीकार करें: छवि/gif, छवि/जेपीईजी, छवि/पीजेपीईजी, छवि/पीजेपीईजी, एप्लिकेशन/एक्स-शॉकवेव-फ्लैश, */* ' फ़ायरफ़ॉक्स हेडर स्वीकार करें:' स्वीकार करें: टेक्स्ट/एचटीएमएल, एप्लिकेशन /xhtml+xml,application/xml;q=0.9, */*; q = 0.8' सुनिश्चित नहीं है कि q = अभी तक क्या मतलब है, लेकिन मुझे लगता है कि यह उस विशेष प्रकार की सामग्री चाहता है । –

16

लोग हैं, जो एएसपी MVC का उपयोग कर रहे और IE के साथ एक ही समस्या है के लिए, यह जब आपकी प्रतिक्रिया लौटने का उपयोग मानक प्रकार है: "application/json", लेकिन काम नहीं करता है आईई के साथ। पाठ/एचटीएमएल का प्रयोग खतरनाक है।

+0

@jrharshath से बेहतर उत्तर, क्योंकि पाठ/सादा तकनीकी रूप से सही नहीं है। यह आईई के पुराने संस्करणों के लिए एक सकल हैक है। –

1

मैं क्यूक्यू AJAX फ़ाइल अपलोडर का उपयोग कर रहा हूं और मैंने पाया कि मुझे सामग्री प्रकार को "टेक्स्ट/जेसन" में ठीक से काम करने के लिए सेट करने की आवश्यकता है।

+0

मैंने कोशिश की लेकिन यह मेरे लिए काम नहीं किया। आईई 7 एंडपॉइंट के रूप में निर्दिष्ट php फ़ाइल डाउनलोड करने का प्रयास करता है। –

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