2010-08-02 12 views
5

मुझे AJAX, CouchDB और जावास्क्रिप्ट के साथ एक छोटी सी समस्या है।कनेक्शन AJAX, CouchDB और जावास्क्रिप्ट

मैं अपने ब्राउज़र में CouchDB से निम्न URL खोल सकते हैं: http://192.168.1.58:5984/mydb/name

new Ajax.Request('http://192.168.1.58:5984/mydb/namee', { 
    method: 'POST', 
    onComplete: function(transport) { 
    alert(transport.responseText); 
    } 
}); 

मैं हमेशा खाली चेतावनी मिलता है।

क्या आप मेरी मदद कर सकते हैं?

उत्तर

3

AJAX क्रॉस डोमेन स्क्रिप्टिंग का समर्थन नहीं करता है। सभी कॉल को उसी दस्तावेज़ के साथ एक यूआरएल होना चाहिए जो वर्तमान दस्तावेज़ में से एक है। एक अच्छा समाधान सर्वर पक्ष पर प्रॉक्सी सेवा बनाना होगा, जो स्थानीय अनुरोध लेगा, सोफेडबी सर्वर पर एक HTTP कॉल करें, और इसकी प्रतिक्रिया वापस कर दें।

5

यहां समस्या यह है कि आपका ब्राउज़र आपको किसी अन्य वेब सर्वर पर एक क्वेरी बनाने की अनुमति नहीं देता है, जहां आप स्क्रिप्ट मूल हैं। (Google के लिए: समान उत्पत्ति नीति)

लेकिन एक सामान्य तकनीक है जो इस उपयोग के मामले के लिए एक समाधान है। इसे JSONP कहा जाता है। संस्करण 1.0 के बाद से आपको पहले इस कार्यक्षमता को कोचडीबी में सक्रिय करना होगा। खंड [httpd] अपने CouchDB विन्यास फाइल के अलावा (.ini) आप एक

allow_jsonp = सच

जोड़ने के लिए ऐसा करने के बाद आप अपने CouchDB पर JSONP प्रश्नों का उत्पादन कर सकते है। मूल रूप से गतिशील रूप से इस तरह की रेखाएं जोड़ना:

<script type="text/javascript" 
    src="http://server2.example.com/getjson?callback=parseResponse"> 
</script> 

लेकिन विवरण के लिए ऊपर दिए गए आलेख का संदर्भ लें।

वैसे भी मैं फ़्रेमवर्क का उपयोग jQuery, DojoToolKit, ect के रूप में करने के लिए चीजों के जावास्क्रिप्ट पक्ष पर प्रस्तावित करता हूं। JQuery में उदा। यह "कॉलबैक =?" जोड़ने के लिए पर्याप्त है यूआरएल के अंत में।

+0

धन्यवाद। वह काम किया! बीटीडब्ल्यू, मेरा कॉचडब इरिस्कचॉम द्वारा होस्ट किया जाता है – edt