2010-10-19 11 views
6

मैं jQuery $.getJSON() अनुरोध से कच्चे JSON प्रतिक्रिया पर कैसे प्राप्त करूं?

मैं बस अपने ब्राउज़र में alert() संवाद में कच्ची प्रतिक्रिया मुद्रित करना चाहता हूं?

+0

आप कच्चे JSON देखने के लिए फ़ायरबग की तरह कुछ का उपयोग करना चाहिए। यह कुछ चेतावनी देने से कहीं अधिक उपयोगी है। – JAL

+0

@alex हाँ मुझे पता है। लेकिन यह एक छिपे हुए टेक्स्ट बॉक्स के अग्रदूत है, इसलिए कुछ उपयोगकर्ता इसे अनदेखा कर सकते हैं और एक ईमेल में प्रतिक्रिया कॉपी/पेस्ट कर सकते हैं। लम्बी कहानी। – Kev

उत्तर

3

यदि आप JSONP का उपयोग कर रहे हैं, तो यह मूल रूप से असंभव है।

यदि आप अपने डोमेन के लिए सामान्य अनुरोध भेज रहे हैं, getJSONget के साथ प्रतिस्थापित करें।

+0

मैं JSONP का उपयोग नहीं कर रहा हूं। आपके सुझाव का प्रयास किया और मुझे बस 'ऑब्जेक्ट ऑब्जेक्ट]' प्रदर्शित हुआ। – Kev

+2

@ केवी: 'डेटा टाइप:' टेक्स्ट 'जोड़ने का प्रयास करें। – SLaks

+0

"farting" की मात्रा के बाद, यह काम करता है। इसका मतलब स्ट्रिंग को किसी ऑब्जेक्ट पर पार्स करने के लिए एक अतिरिक्त चरण है, लेकिन फिर '$ .dump()' या JSON।stringify() 'दूसरी तरफ एक अतिरिक्त कदम है। – Kev

0

http://api.jquery.com/jQuery.getJSON/

मैं पूरी .ajax तरीकों का उपयोग करने के लिए तो मैं कपोल-कल्पना के विभिन्न हस्ताक्षर याद करने की जरूरत नहीं है पसंद करते हैं।

डॉक्स बताएं कि आप इस getJSON के बराबर है:

$.ajax({ 
    url: url, 
    dataType: 'json', 
    data: data, 
    success: callback 
}); 

आप हो सकता था जहां:

function callback(data) { 
    alert(data); 
} 

मैं दृढ़ता से सुझाव है कि आप console.log साथ फ़ायरफ़ॉक्स और Firebug का उपयोग(); इस तरह की चीज के लिए। अलर्ट थोड़ी देर के बाद आपको पागल हो जाता है।

संपादित

अन्य प्रतिक्रियाओं के आधार पर, मैं अपने प्रश्न गलतफहमी हो सकती है! कच्ची प्रतिक्रिया देखने के लिए आप हमेशा फिडलर का उपयोग कर सकते हैं।

+0

यह कच्ची जेसन स्ट्रिंग है जो उस तार में आई है जिसे मैं मुद्रित करना चाहता हूं। यह बस इतना था कि मैं एक सरणी मूल्य की जांच करने के लिए एक त्वरित हैकी डीबग चीज कर सकता था। लेकिन सभी एक ही धन्यवाद। – Kev

+0

फायरबग तब जाने का रास्ता है। पूरी ऑब्जेक्ट लौटने के लिए बस फ़ंक्शन कॉलबैक (डेटा) {console.log (डेटा);} में बदलें। – ScottE

+0

'console.log() 'अभी भी डेटा को डंप करता है जैसे कि यह एक वस्तु है, वास्तव में जो मैं बाद में नहीं हूं। मुझे कच्चे JSON (घुंघराले ब्रेसिज़, स्क्वायर ब्रैकेट, फ़ील्ड नाम, वार और सभी) नहीं मिलते हैं। फिडलर काम करता है लेकिन मैं इसे अंततः 'गुप्त' टेक्स्टबॉक्स में एम्बेड करना चाहता था। – Kev

0

मैंने सुविधा का उपयोग https://github.com/douglascrockford/JSON-js/blob/master/json2.js में किया।

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

+0

ध्यान दें कि यह आपके द्वारा प्राप्त वास्तविक JSON को आवश्यक रूप से वापस नहीं करेगा। (स्वरूपण अलग हो सकता है) – SLaks

+0

@ स्लक्स - हाँ लेकिन यह क्षणिक रूप से एक उद्देश्य प्रदान करता है। – Kev

13

jQuery 1.5 के रूप में jqXHR ऑब्जेक्ट कॉलबैक विधि के तीसरे तर्क के रूप में पारित किया गया है। JqXHR ऑब्जेक्ट में एक reponseText प्रॉपर्टी है जिसमें कच्ची JSON स्ट्रिंग है।

function callback(data, status, jqXHR) { 
    alert(jqXHR.responseText); 
    // or console.log(jqXHR.responseText); 
} 
+1

हां, त्रुटियों से निपटने के दौरान यह बहुत उपयोगी है: '.fail (function (jqxhr, textStatus, त्रुटि) { console.error ("प्रतिक्रिया थी:" + jqxhr.responseText); }); ' –

0

विभिन्न विकल्पों की एक संख्या वास्तविक प्रतिक्रिया प्राप्त करने के लिए है कि क्या यह JSON कि पार्स किया गया था या ब्राउज़र/सर्वर है कि 'getJSON' विधि को पार्स करने का प्रयास किया लेकिन असफल द्वारा उत्पन्न त्रुटि हो रहे हैं।

नोट: '.always' विधि के साथ पैरामीटर विफलता या सफलता के आधार पर बदलते हैं।

$.getJSON(getData.php, function(data,textStatus,jqXHR) { 
    console.log(jqXHR.responseText); 

//As of 1.5 we have these methods: 
}).always(
    function(jqXHR, textStatus, errorThrown) { //on failure 
     console.log(jqXHR.responseText); 
}).always(
    function(data, textStatus, jqXHR) { //on success 
     console.log(jqXHR.responseText); 
}).fail(
    function(jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR.responseText); 

//As of 1.8 we have this method also: 
}).then(
    function(data, textStatus, jqXHR) { 
     console.log(jqXHR.responseText);}, 
    function(jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR.responseText); 
}); 

यदि आप चाहते हैं और अधिक जानकारी के लिए यहां जाएं:
http://api.jquery.com/jQuery.ajax/#jqXHR या
http://api.jquery.com/category/deferred-object/

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