David Dorward के रूप में उल्लेख किया गया है, JSON-P सबसे सरल और तेज़ है; हालांकि, एक और चाल है, विशेष रूप से दो iframes का उपयोग कर।
दो JSONP का उपयोग किए बिना इस समस्या को हल करें, आप निम्न कार्य कर सकते हैं। यह तकनीक मानती है कि आपके पास मूल पृष्ठ पर कुछ प्रकार की विकास पहुंच है।
दो डोमेन/साइटों पर तीन पृष्ठ हैं।
- जनक पेज
- सामग्री पेज
- क्रॉस-डोमेन संचार पेज (उर्फ "xdcomm")
पेज माता पिता और xdcomm पेज एक ही डोमेन पर होस्ट कर रहे हैं, सामग्री पृष्ठ है किसी अन्य डोमेन पर होस्ट किया गया। सामग्री पृष्ठ को मूल पृष्ठ में आईफ्रेम के रूप में एम्बेड किया गया है और xdcomm पृष्ठ सामग्री पृष्ठ में एक छिपे हुए आईफ्रेम के रूप में एम्बेड किया गया है।
xdcomm पेज एक बहुत ही सरल स्क्रिप्ट क्वेरी स्ट्रिंग में पैरामीटर प्राप्त करें पता लगाता है कि होता है, method
और args
चर (जहां args
एक JSON इनकोडिंग स्ट्रिंग) के लिए है कि स्ट्रिंग को पार्स करता है, और उसके बाद निर्दिष्ट विधि कार्यान्वित मूल पृष्ठ में निर्दिष्ट तर्क के साथ। एक उदाहरण seen here (स्रोत देखें) हो सकता है।
भले ही जावास्क्रिप्ट की समान उत्पत्ति नीति किसी डोमेन पर दूसरे डोमेन तक पहुंचने से कोड को प्रतिबंधित करती है, इससे कोई फर्क नहीं पड़ता कि डोमेन एक-दूसरे के भीतर घोंसले हैं (डोमेन ए, डोमेन बी के भीतर घोंसला, डोमेन ए के भीतर घोंसला)।
तो, संक्षेप में, सामग्री पृष्ठ http://domaina.com/xdcomm.html?src=foo&args=[1,2,3,4]
जैसे कुछ के लिए iframe के स्रोत को बदलकर xdcomm पृष्ठ के माध्यम से अभिभावक पृष्ठ पर संदेश भेजता है। यह मूल पृष्ठ में foo(1,2,3,4)
निष्पादित करने के बराबर होगा।
इसके अलावा, यह भी पता है कि पहले से ही पुस्तकालय हैं जो easyxdm जैसे आपकी सहायता करते हैं। जो मैंने यहां समझाया है वह उन तकनीकों में से एक का आधार है जो वे उपयोग करते हैं, और जब यह कल्पना के रूप में नहीं हो सकता है, यह निश्चित रूप से पूरी तरह से कामकाजी और हल्के कार्यान्वयन है।
क्या ब्राउज़र (ओं)? आपने यह वास्तव में कैसे किया? पोस्ट कोड? – bmargulies
यह सवाल शायद सबसे अक्सर पूछे जाने वाले प्रश्न है! एक खोज * कई * उत्तरों लाया होगा। आपको दोनों डोमेन पर स्क्रिप्ट और पृष्ठों पर नियंत्रण की आवश्यकता है (यदि आप दोनों डोमेन पर सामग्री संपादित करने में सक्षम नहीं हैं, तो आप इसे करने में सक्षम नहीं होंगे), और या तो http: // easyxdm जैसे ढांचे का उपयोग करने की आवश्यकता है "क्रॉस डोमेन मैसेजिंग संचार" के लिए .NET या खोजें।एचटीएमएल 5 spec में 'postMessage' विधि है, लेकिन यदि आप पूरी तरह से इस पर भरोसा करते हैं, तो यह अधिकांश ब्राउज़रों में काम नहीं करेगा, इसलिए आपको एक पुराने "हैक" विधि पर वापस गिरना होगा - क्यों न केवल एक ढांचा लेना यह आपके लिए ख्याल रखता है? – Graza
[जेएसओएन-पी] (http://www.insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html) सबसे सरल समाधान है, और केवल एक (AFAIK) है कि ब्राउज़र प्लगइन्स की आवश्यकता नहीं है (जैसे फ्लैश)। इसके लिए जो कुछ भी मूल मूल साइट चलाता है उसके सहयोग की आवश्यकता होती है। – Quentin