2014-11-26 4 views
9

मेरे पास एक AngularJS एप्लिकेशन है जिसमें मैं एक सर्वर से $ http के साथ एक एक्सएमएल डेटा प्राप्त करने का प्रयास कर रहा हूं, http://example.com/a/b/c/d/getDetails?fname=abc&lname=def (जब ब्राउज़र में लिंक दर्ज करके मैन्युअल रूप से एक्सेस किया जाता है तो यह XML फ़ाइल की वृक्ष संरचना दिखाता है)।

जब मैं एप्लिकेशन चलाता हूं तो उस लिंक से डेटा प्राप्त नहीं होता है। इसके बजाय यह स्थिति 0 के साथ एक त्रुटि दिखा रहा है।

//url = http://example.com/a/b/c/d/getDetails?fname=abc&lname=def 
$http.get(url).success(function (data){ 
       alert("Success"); 
       deferred.resolve(data); 
      }).error(function (data, status){ 
       console.log("Error status : " + status); 
      }); 

मुझे यकीन है कि नहीं कर रहा हूँ क्यों $ http.get विफल रहता है और लौटने त्रुटि फ़ंक्शन स्थिति 0.

को जाता है लेकिन अगर मैं जो एक JSON ऑब्जेक्ट है स्थानीय सर्वर के लिए एक यूआरएल पारित यह, काम करता है।

क्या समस्या है क्योंकि मैं किसी भिन्न डोमेन (सीओआरएस समस्या?) या किसी अन्य चीज़ से एक्सएमएल फ़ाइल तक पहुंचने का प्रयास कर रहा हूं?

कृपया मेरी मदद करें!

+0

हां, अपना कंसोल देखें, आपको एक त्रुटि होनी चाहिए (क्रॉस उत्पत्ति ...) –

+1

नहीं। मुझे अपने कंसोल में ऐसा कुछ नहीं मिला है। – kumareloaded

+0

क्या होगा यदि मैं त्रुटि लॉग इन कंसोल नहीं करना चाहता हूं लेकिन इसे DOM पर वापस कर दूं? – mdarmanin

उत्तर

16

के कार्यान्वयन पर एक लेख पा सकते हैं।

आपके आरईएसटी अनुरोधों का उत्तर देने वाले सर्वर में एंगुलर को प्रतिक्रिया ठीक से उपभोग करने की अनुमति देने के लिए सीओआरएस द्वारा निर्दिष्ट शीर्षकों को शामिल करना होगा। अनिवार्य रूप से इसका मतलब है कि आपकी प्रतिक्रिया में एक्सेस-कंट्रोल-ऑब्जेक्ट-हेडर हेडर समेत, सर्वर से निर्दिष्ट करें कि अनुरोध कहां से आता है, इसकी अनुमति है। (ref)

निर्देश Angular एक श्वेतसूची और ब्लैकलिस्ट को प्राप्त करने/सेट करने की अनुमति देता है ताकि यह सुनिश्चित किया जा सके कि कोणीय टेम्पलेट्स को सोर्सिंग के लिए उपयोग किए गए यूआरएल सुरक्षित हैं।

+0

तो क्या यह पर्याप्त होगा यदि मैं XML डेटा तक पहुंचने के लिए उपयोग किए जाने वाले लिंक को श्वेतसूची में डालूं? – kumareloaded

+0

यदि आप xmlhttprequests का उपयोग करते हैं तो आपको JSONpadding की आवश्यकता है। हालांकि, सर्वर को "क्रॉस-ओरिजिनल रिसोर्स शेयरिंग (सीओआरएस)" का समर्थन करना चाहिए, इसमें किसी अन्य डोमेन से डेटा प्राप्त करना शांत हो सकता है। – KByK

2

हाँ आपको यह सही मिला है, क्योंकि यह $ http के लिए डिफ़ॉल्ट सामग्री-प्रकार "एप्लिकेशन/जेसन" है यदि आप अनुरोध डेटा या प्रतिक्रिया डेटा बदलना चाहते हैं तो आप इसे tranformRequest और tranformResponse की मदद से बदल सकते हैं। आप अधिक जानकारी पा पर यह here

भी मैं आप HTTP access control (CORS) मुद्दे हैं tranformRequest change post data from json to form post in angularjs

+0

धन्यवाद। तो transformRequest का उपयोग करने के बाद मेरे आवेदन के लिए, क्या मुझे xml सामग्री को JSON में परिवर्तित करने और इसका उपयोग करने के लिए xml2json का उपयोग करना चाहिए? (http://rabidgadfly.com/2013/02/angular-and-xml-no-problem/) या क्या इसके लिए कोई और बेहतर समाधान है? – kumareloaded

+0

आपका लिंक स्पैम साइटों पर रीडायरेक्ट कर रहा है – tylerlindell

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