मैं IE को केवल डाउनलोड करने के लिए ऑफ़र के बजाय आवेदन / json कैसे प्रदर्शित कर सकता हूं?


161

AJAX का उपयोग करने वाले jQuery के ऐप्स को डीबग करते समय, मुझे अक्सर उस json को देखने की आवश्यकता होती है जो ब्राउज़र द्वारा सेवा में वापस किया जा रहा है। इसलिए मैं JSON डेटा के लिए URL को एड्रेस बार में छोड़ दूंगा।

यह ASPNET के साथ अच्छा है क्योंकि कोडिंग त्रुटि की स्थिति में, मैं ASPNET डायग्नोस्टिक ब्राउज़र में देख सकता हूं:

वैकल्पिक शब्द

लेकिन जब सर्वर-साइड कोड सही तरीके से काम करता है और वास्तव में JSON देता है, तो IE मुझे इसे डाउनलोड करने का संकेत देता है, इसलिए मैं प्रतिक्रिया नहीं देख सकता।

वैकल्पिक शब्द

क्या मुझे IE ऐसा करने के लिए नहीं मिल सकता है, दूसरे शब्दों में, बस इसे प्रदर्शित करने के लिए जैसे कि यह सादा पाठ था?

मुझे पता है कि अगर मैं कंटेंट-टाइप हेडर लगाता हूं तो मैं ऐसा कर सकता हूं text/plain

लेकिन यह विशेष रूप से एक ASPNET MVC ऐप का संदर्भ है, जो मेरे एक एक्शन तरीकों पर JsonResult का उपयोग करते समय स्वचालित रूप से प्रतिक्रिया सेट करता है। इसके अलावा, मैं थोड़े उपयुक्त सामग्री-प्रकार को रखना चाहता हूं, और इसे केवल डिबगिंग प्रयासों का समर्थन करने के लिए नहीं बदलना चाहता।


फ़ायरफ़ॉक्स 3/4 भी ऐसा करता है, अगर आपके पास एक मशीन है जिसे अपडेट नहीं किया गया है।
क्रिस एस

8
मुझे "कायल" का उपयोग पसंद है !!
आराध्यदेव

जवाबों:


234

मुझे जवाब मिल गया।

आप रजिस्ट्री को अपडेट करके ब्राउज़र विंडो में एप्लिकेशन / जोंस प्रदर्शित करने के लिए IE8 को कॉन्फ़िगर कर सकते हैं। बाहरी उपकरण की कोई आवश्यकता नहीं है। मैंने इसे मोटे तौर पर परीक्षण नहीं किया है, लेकिन यह विस्टा पर IE8 के साथ काम करता है।

इसका उपयोग करने के लिए, याद रखें, रजिस्ट्री को अपडेट करने के बारे में सभी सामान्य चेतावनी। IE बंद करो। फिर, निम्नलिखित को एक फ़ाइल में, के नाम से काटें और चिपकाएँ json-ie.reg

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

फिर .reg फ़ाइल को डबल-क्लिक करें। IE को पुनरारंभ करें। जब आप उस URL को गुदगुदी करते हैं, जिसके साथ Content-Type: application/jsonया Content-Type: text/jsonउसके साथ एक डॉक्यूमेंट मिलता है, तो नया व्यवहार :

वैकल्पिक शब्द

यह क्या करता है, यह क्यों काम करता है:

25336920-03F9-11cf-8FD0-00AA00686F13"जगह में ब्राउज़" कार्रवाई के लिए CLSID है। मूल रूप से यह रजिस्ट्री प्रविष्टि IE को बता रही है कि डॉक्स के लिए जिसमें एक माइम प्रकार का एप्लिकेशन / जसन है, बस इसे जगह में देखें। यह <script>टैग के माध्यम से , या XHR के माध्यम से डाउनलोड किए गए किसी भी आवेदन / json दस्तावेजों को प्रभावित नहीं करेगा , और इसी तरह।

CLSID और एन्कोडिंग चाबी के लिए उपयोग किए गए मूल्यों को प्राप्त image/gif, image/jpegऔर text/html

यह संकेत इस साइट से आया है , और माइक्रोसॉफ्ट के लेख से इंटरनेट एक्सप्लोरर में माइम प्रकारों को संभालना है


FF में, आपको किसी बाहरी ऐड-ऑन की आवश्यकता नहीं है। आप बस view-source:छद्म प्रोटोकॉल का उपयोग कर सकते हैं । एड्रेस बार में इस तरह एक URL दर्ज करें:

view-source:http://myserver/MyUrl/That/emits/Application/json

यह छद्म-प्रोटोकॉल IE में समर्थित होने के लिए उपयोग किया जाता था, साथ ही, WinXP-sp2 तक, जब Microsoft ने सुरक्षा कारणों से इसे निष्क्रिय कर दिया था।


13
यदि आप रजिस्ट्री फ़ाइल बनाना छोड़ना चाहते हैं, तो यहां एक लाइनर है जिसे आप एक पॉवरशेल विंडो में पेस्ट कर सकते हैं:reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /t REG_SZ /d "{25336920-03F9-11cf-8FD0-00AA00686F13}"; reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /v Encoding /t REG_DWORD /d 0x08000000
जेसन आर। कोमब्स

2
@nathanvda, दुनिया के सबसे बड़े हिस्से को कुछ भी पूछने की आवश्यकता नहीं है। ब्राउज़र में JSON दिखाना कुछ ऐसा है जो AJAX पेज का एक डेवलपर करना चाहता है। नियमित उपयोगकर्ताओं के लिए ब्राउज़र में JSON प्रदर्शित करना पूरी तरह अनावश्यक है।
चीज़ो

3
मैंने दोस्त से मेरे बॉक्स को उधार लेने की अनुमति देने की घातक गलती की और उसने यह तय किया क्या किसी को पता है कि मूल सेटिंग्स क्या हैं ताकि मैं उन्हें उल्टा कर सकूं?
केवदोग

7
@Mosh, यह ऊपर nathanvda द्वारा उल्लेख किया गया था, समाधान इतना नहीं है कि वेबसाइट के उपयोगकर्ता JSON देख सकते हैं, यह बस एक डीबगिंग उद्देश्य के लिए है। पूरा प्रश्न पढ़ें।
एंथनी शॉ

2
यह अभी भी IE11 में 8.1 जीत पर काम कर रहा है। ब्राउज़र को पुनरारंभ करने की भी आवश्यकता नहीं थी। मेरे मामले में मुझे text/jsonचाबी की जरूरत थी ।
क्रिस

15

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मैं "$। GetJSON" jQuery का उपयोग कर रहा था और सब कुछ फ़ायरफ़ॉक्स और क्रोम में पूरी तरह से काम करता था।

लेकिन यह IE में काम नहीं किया। इसलिए मैंने सीधे json के URL तक पहुंचने का प्रयास किया, लेकिन IE में यह पूछा कि क्या मैं फ़ाइल डाउनलोड करना चाहता हूं।

बहुत खोज के बाद मैंने देखा कि सामग्री-प्रकार के साथ परिणाम में एक हेडर होना चाहिए, मेरे मामले में, सामग्री-प्रकार था:

header("Content-type: text/html; charset=iso-8859-1");

लेकिन जब पेज जो अनुरोध करता है, वह इस json को प्राप्त करता है, तो IE में, आपको मेरे मामले में SAME CONTENT-TYPE निर्दिष्ट करना होगा:

$.getJSON (
"<? site_url php echo (" ajax / tipoMenu ")?>"
{contentType: 'text / html; charset = utf-8'},
function (result) {

गले


यह मेरे लिए काम करता है, रजिस्ट्री के साथ कोई गड़बड़ी की आवश्यकता नहीं है, बस प्रतिक्रिया हैडर को "टेक्स्ट / एचटीएमएल" भी बदलें।
64k

2
अजाक्स कॉल करते समय IE7 में यह कैसे काम करता है और परिणामस्वरूप json प्राप्त करता है? मैं getJSON का उपयोग नहीं कर रहा हूं, बल्कि एक .ajax कॉल कर रहा हूं। मैंने उस सामग्री प्रकार का उपयोग प्रतिक्रिया और शीर्ष लेख में किया है और यह बिल्कुल मदद नहीं करता है। न ही json2.js का उपयोग किया। किसी को भी है कि इस काम के सफल कार्यान्वयन है7 में? IE7 हमारे उपयोगकर्ताओं के 30% से अधिक का प्रतिनिधित्व करता है। दुख की बात है लेकिन सच है, और एक reg कुंजी परिवर्तन एक विकल्प नहीं है। एक लाख हैक करने के लिए एक लाख शासन उपयोगकर्ताओं को बताना उड़ नहीं होगा।
सीडी स्मिथ

मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन इसे दोहराया जा रहा है, इसलिए यहां उत्तर है: मूल प्रश्न उन विकासकर्ताओं से संबंधित है जो JSON की पुनर्प्राप्ति को डीबग कर रहे हैं। रेग को संशोधित करने का सुझाव उन डेवलपर्स की मदद के लिए एक कदम के रूप में दिया गया है। रजिस्ट्री का Modyfing सामान्य उपयोगकर्ताओं के लिए अनुशंसित या सुझाया नहीं गया है। इसके अलावा: ब्राउज़र में JSON देखने के लिए नियमित उपयोगकर्ताओं (= एक मिलियन सरकारी उपयोगकर्ता) की आवश्यकता नहीं है।
चेसो

बस उपयोग करें text/plain; charset=UTF-8। पाठ / html की आवश्यकता नहीं है।
पेरीफ्लाईन

13

उपरोक्त समाधान गायब था, और नीचे दिए गए कोड को हर स्थिति में काम करना चाहिए:

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/x-json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

बस इसे सहेजें json.reg फ़ाइल, और अपनी रजिस्ट्री को संशोधित करने के लिए चलाएँ।


मेरा काम कंप्यूटर बंद है। यदि आपको इन्हें जोड़ने के लिए कमांड लाइन की आवश्यकता है, तो यह उत्तर देखें। stackoverflow.com/questions/13809856/… धन्यवाद ओपी। मुझे IE में json दिखाई देता है ........ याय!
ग्रेनडाकोडर

2

यदि आप केवल IE को JSON को नोटपैड में खोलने के साथ ठीक हैं, तो आप अपने सिस्टम के डिफ़ॉल्ट प्रोग्राम को .json फाइलों को नोटपैड में बदल सकते हैं।

ऐसा करने के लिए, .json फ़ाइल बनाएं, सही माउस क्लिक करें, और "ओपन विथ" या "डिफ़ॉल्ट प्रोग्राम चुनें" चुनें।

यदि आप संयोग से इंटरनेट एक्सप्लोरर का उपयोग करना चाहते हैं तो यह काम आ सकता है, लेकिन आपकी आईटी कंपनी आपको अपनी रजिस्ट्री संपादित नहीं करने देगी। अन्यथा, मैं उपरोक्त उत्तरों की सलाह देता हूं।


1

मैं JSON का निरीक्षण करने के लिए JSONViewer प्लगइन के साथ Fiddler का उपयोग करता हूं । मुझे नहीं लगता कि यह संभव है कि IE रजिस्ट्री के साथ फ़िडलिंग के बिना व्यवहार कर सकता है। यहाँ कुछ जानकारी है।


1

IE के JSON माइम-प्रकार की सेटिंग को बदलने से IE के सभी JSON प्रतिक्रियाओं का व्यवहार करने का तरीका प्रभावित होगा ।

टेक्स्ट / html में माइम-टाइप हेडर को बदलना किसी भी ब्राउज़र को प्रभावी रूप से बताएगा कि आप जिस JSON की प्रतिक्रिया दे रहे हैं वह JSON नहीं है, बल्कि प्लेन टेक्स्ट है।

न तो विकल्प बेहतर हैं।

इसके बजाय आप उपर्युक्त फ़िडलर या किसी अन्य नेटवर्क ट्रैफ़िक इंस्पेक्टर प्रॉक्सी जैसे प्लगइन या टूल का उपयोग करना चाहेंगे, जहां आप हर बार चुन सकते हैं कि JSON प्रतिक्रिया को कैसे संसाधित किया जाए।


2
text/htmlब्राउज़र को यह नहीं बताता कि प्रतिक्रिया सादा पाठ है, लेकिन HTML। यदि आप तय करते हैं कि आप सादा पाठ चाहते हैं, तो उपयोग करें text/plain। अन्यथा आप कुछ दिलचस्प एक्सएसएस कमजोरियों के साथ समाप्त हो सकते हैं।
माइकल जूनियर

0

फायरफॉक्स + फायरबग इस उद्देश्य के लिए बहुत अच्छा है। IE के लिए एक डेवलपर टूलबार है जिसका मैंने कभी उपयोग नहीं किया है और इसका उपयोग करने का इरादा रखता हूं इसलिए मैं बहुत प्रतिक्रिया नहीं दे सकता।


हाँ, मुझे एफएफ प्लगइन के बारे में पता है जो नियमित पाठ के रूप में आवेदन / जोंस के प्रदर्शन की अनुमति देता है। मैं विशेष रूप से IE के बारे में जानना चाहता हूं, हालांकि।
चेसो

IE के लिए एक डेवलपर टूलबार है। वैसे यहाँ डेवलपर्स के लिए विभिन्न उपकरणों की एक अच्छी तुलना है: सुरुचिपूर्णकोड
डारिन दिमित्रोव

0

मैं सिर्फ एक XMLHttpRequest के साथ एक ही मुद्दा था। साइट क्रोम और एफएफ में दोषरहित रूप से कार्य करती है, और उत्पादन में दर्जनों इंटरनेट एक्सप्लोरर ब्राउज़रों पर। यह एक मशीन (एक हमारी कंपनी एक डेमो मशीन स्थापित कर रही है, निश्चित रूप से) ने फैसला किया कि यह एक ऐजैक्स अनुरोध के लिए json प्रतिक्रिया को बचाने के लिए संकेत देने वाली थी।

इसे नीचे दिए गए स्वीकार किए जाते हैं। धन्यवाद।


-1

आप Fiddler में प्रतिक्रिया देख सकते हैं: http://www.fiddler2.com/fiddler2/

ऐसी चीजों के लिए यह अच्छा उपकरण है!


मैं फिडलर के बारे में जानता हूं, लेकिन यह कुछ सरल के लिए ओवरकिल लगता है।
चीजो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.