2010-01-13 18 views
14

प्रश्न:क्रॉस-डोमेन JSON अनुरोध?

मैं JSON करवाते हैं डोमेन का उपयोग करने की कोशिश कर रही है, लेकिन सभी मैं खोजने के JSON पारसर्स, जो मैं की जरूरत नहीं है है ...
मैं पढ़ा है कि यह क्रॉस-डोमेन करना संभव नहीं है JSON, अनुरोध लेकिन अब तक, सब मैं देख रहा है कार्यान्वयन कि XMLHttpRequest का उपयोग करें ...
- जिसका अर्थ है आप क्रॉस-डोमेन अनुरोध उपयोग नहीं कर सकते, कम से कम आईई 8 के बाहर नहीं ...
मैंने http://www.json.org/ पर रहा है, लेकिन मुझे लगता है कि या तो पार्सर्स या बेकार है।

सबसे अच्छा मैं गूगल के साथ पाया है अब तक
http://devpro.it/JSON/files/JSONRequest-js.html
है, लेकिन यह नहीं बल्कि एक मेस है, क्रॉस-डोमेन काम नहीं करता है, और इंट्रा-डोमेन न - या बल्कि बिल्कुल नहीं ...

var the_object = {}; 
var http_request = new XMLHttpRequest(); 
http_request.open("GET", url, true); 
http_request.onreadystatechange = function() { 
    if (http_request.readyState == 4 && http_request.status == 200) { 
      the_object = JSON.parse(http_request.responseText); 
     } 
}; 
http_request.send(null); 
+0

यदि आप "http_request.responseXML" का उपयोग करते हैं तो सर्वर से आपकी प्रतिक्रिया एक्सएमएल नहीं है तो यह शून्य हो जाएगी। – dinesh707

उत्तर

14

आप क्रॉस-डोमेन क्या कर सकते हैं एक स्क्रिप्ट इंजेक्षन है में शामिल हैं:

var s = document.createElement('script'); 
s.src = 'http://someotherdomain/getMeMyJs.aspx?parameter=value'; 
s.onload = someOptionalCallback; 
s.type = 'text/javascript'; 

if(document.getElementsByTagName('head').length > 0) 
    document.getElementsByTagName('head')[0].appendChild(s); 

अब, कोड है कि अनुरोध द्वारा दिया कार्यकारी किया जाएगा तुरंत एड।

jsonCallback({ object: json, whatever: value }); 

आप उपयोग कर सकते हैं कि एपीआई के निर्माण के लिए, जहाँ आप एक के नाम से पारित: यदि आप अपने कोड के साथ बातचीत करने के लिए चाहते हैं, आप यकीन है कि यह एक समारोह कॉल में लिपटे सभी डेटा के साथ वापस आ जा रहा है कर सकते हैं अनुरोध क्वेरीस्ट्रिंग पैरामीटर के रूप में कॉलबैक फ़ंक्शन। Here's an example of such an API

+5

इसे आम तौर पर JSONP (पैडिंग के साथ JSON) के रूप में जाना जाता है। Http://en.wikipedia.org/wiki/JSONP#JSONP –

+0

देखें आपको यह प्रयास करना चाहिए: s.src = 'http://google.com/complete/search?q=' + document.getElementById ('txtSynonym ') .value +' और कॉलबैक = GoogleSuggest '; –

13

JSON केवल एक क्रमबद्ध विधि है। Serialization की विधि के बीच कोई संबंध नहीं है और यह सवाल है कि ब्राउज़र आपको डोमेन पर डेटा तक पहुंचने से रोकने का प्रयास करेगा या नहीं। (यह बताता है कि आप केवल पार्सर्स क्यों ढूंढ रहे हैं - एन्कोडिंग को छोड़कर और इसे डीकोड करने के अलावा JSON के लिए कुछ भी नहीं है)।

XMLHTTPRequest का नाम सिर्फ XML HTTPRequest है। एक्सएमएल के साथ वास्तव में कुछ भी नहीं है। इसका उपयोग टेक्स्ट डेटा, जेएसओएन में एन्कोड किए गए डेटा, या किसी अन्य धारावाहिक विधि को भेजने के लिए किया जा सकता है।

डेटा क्रॉस डोमेन तक पहुंचने के कई तरीके हैं। डेविड हेडलंड के जवाब में वर्णित एक। अन्य समान प्रश्नों के उत्तर में पाए जा सकते हैं (here और here देखें)।

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