2010-06-18 16 views
9

प्राप्त करने के लिए जेसनपी का उपयोग करें, मैं किसी अन्य सर्वर से वेबपृष्ठ में एक्सएमएल पढ़ने की कोशिश कर रहा हूं, और मुझे लगता है कि मेरी समस्या समान-मूल नीति है, और इसलिए एक क्रॉस डोमेन समस्या है।एक्सएमएल क्रॉस डोमेन

मेरे पास थोड़ी सी गुगलिंग है और ऐसा लगता है कि जेसनपी आगे बढ़ रहा है। कुछ उदाहरणों के आधार पर मैंने यहां स्टैक ओवरफ्लो और दूसरी साइटों पर पाया, यह मेरे पास है, और यह सर्वर को एक्सएमएल के साथ "हिट" नहीं करता है। मैं एक ब्राउज़र में एक्सएमएल देख सकता हूँ।

$(document).ready(function(){  
    $.ajax({ 
     type: 'GET', 
     dataType: 'jsonp',     
     url: 'http://192.168.0.106:8111/getconfiguration?', 
     success: function (xml) 
     { //do stuff with received xml 
     }});  

कोई सुझाव? कृपया ध्यान रखें कि मैं जेएस/JQuery के संबंध में एक नौसिखिया हूं; ओ)

उत्तर

1

यदि आपके पास रिमोट सर्वर पर एक्सएमएल उत्पन्न करने वाले कोड तक पहुंच है, तो आप पूरी चीज jsonp में लपेट सकते हैं।

JSONP दूरस्थ रूप से जानकारी निकालने की कोशिश करने के बजाय <script> टैग्स का उपयोग करके डेटा प्राप्त करके समान मूल नीति के आसपास होने का एक तरीका है।

अपने getconfiguation लिपि में, आप

callback("SERVER GENERATED XML/JSON DATA GOES HERE"); 

जहां कॉलबैक दूरस्थ कॉल

उदाहरण के लिए द्वारा निर्दिष्ट किया जाता तरह कुछ होता है, यदि आपका दूरस्थ स्क्रिप्ट php था, आप इसे कुछ इस प्रकार दिखाई बनाना होगा इस तरह:

<?php 
// getconfiguration.php 
echo "$_GET['callback']($configuration_data);" 
?> 

फिर अपने प्रश्न में प्रदान किए गए AJAX को चलाएं। क्या यह वास्तव में इस तरह अपने पृष्ठ में गतिशील रूप से एक स्क्रिप्ट टैग सम्मिलित है करता है:

<script src="http://192.168.0.106:8111/getconfiguation.php?callback=???"></script> 

jQuery में भर जाता है ??? आप के लिए कुछ अद्वितीय आवरण यह अपनी सफलता कॉलबैक के लिए उत्पन्न साथ

+1

यदि आपके पास इसका उपयोग नहीं है तो क्या होगा? आप केवल एक्सएमएल प्रारूप में डेटा भेज/प्राप्त कर सकते हैं। – crosenblum

+1

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

3

आप सर्वर (अगर, उदाहरण के लिए, आप एक API लेने वाली कर रहे हैं) आप YQL उपयोग कर सकते हैं jsonp करने के लिए अपने एक्सएमएल कन्वर्ट करने के लिए उपयोग नहीं है, तो और एक कस्टम कस्टम YQL url (जिसमें एक SQL- जैसा कथन एम्बेडेड है) का उपयोग कर ब्राउज़र से याहू सर्वर से पूछताछ करें। यहां एक उदाहरण दिया गया है (ज़िलो एपीआई के लिए):

$('document').ready(function(){ 
    $.ajax({ 
    url: 'http://query.yahooapis.com/v1/public/yql?q=select * from zillow.search where address = "1835 73rd Ave NE" and citystatezip = "98039" and zwsid = "X1-ZWz1cse68iatcb_13bwv"&format=json&diagnostics=true&env=http://datatables.org/alltables.env&callback=mydata', 
    jsonpCallback: "mydata", 
    success: function(results) { 
     console.log(results.query.results.searchresults.response.results.result.zpid); 
    }, 
    dataType: 'jsonp' 
    }); 
}); 
संबंधित मुद्दे