2013-02-13 66 views
5

मैं अपने पालतू जानवरों की सूची प्राप्त करने के लिए Petfinder.com को कॉल करने का प्रयास कर रहा हूं। यूआरएल http://api.petfinder.com/shelter.getPets?key=xxxxx&id=CA1469&format=jsonJQuery AJAX कॉल स्थिति कोड प्राप्त कर रहा है 0 "त्रुटि"

यूआरएल जेएसओएन जुर्माना वापस करने लगता है। लेकिन जब मैं कॉल करने की कोशिश करता हूं तो मुझे "त्रुटि" और स्थिति कोड 0 मिल रहा है। मैंने jsonp का उपयोग करने का प्रयास किया जिसके परिणामस्वरूप 200 की स्थिति होती है लेकिन एक पार्स त्रुटि होती है। अगर मैं एक्सएमएल में बदलता हूं तो मेरे पास स्थिति 0 और "त्रुटि" का परिणाम होता है।

$.ajax({ 

     url: "http://api.petfinder.com/shelter.getPets?key=xxxx&id=CA1469&format=json", 
     dataType: "json", 
     type: "GET", 
     success: function (data) { 
      alert("hi"); 
     }, 
     error: function (jqXHR, exception) { 
      if (jqXHR.status === 0) { 
       alert('Not connect.\n Verify Network.'); 
      } else if (jqXHR.status == 404) { 
       alert('Requested page not found. [404]'); 
      } else if (jqXHR.status == 500) { 
       alert('Internal Server Error [500].'); 
      } else if (exception === 'parsererror') { 
       alert('Requested JSON parse failed.'); 
      } else if (exception === 'timeout') { 
       alert('Time out error.'); 
      } else if (exception === 'abort') { 
       alert('Ajax request aborted.'); 
      } else { 
       alert('Uncaught Error.\n' + jqXHR.responseText); 
      } 

     } 
    }); 
+1

क्या आपको अपने कंसोल में 'वही उत्पत्ति' त्रुटि मिल रही है? क्या आप आईई का उपयोग कर रहे हैं? क्रॉस-मूल अनुरोधों को या तो JSONP (जिसे उचित JSONP प्रतिक्रिया की आवश्यकता होती है) या सीओआरएस सक्षम के साथ भेजने की आवश्यकता होती है जिसके लिए सर्वर को सीओआरएस का समर्थन करने के लिए सीओआरएस और ब्राउज़र का समर्थन करने की आवश्यकता होती है। jQuery आईई में सीओआरएस का समर्थन नहीं करता है <10. –

+0

ट्रेलो की एपीआई क्लाइंट लाइब्रेरी का एक अच्छा उदाहरण है कि वे सीओआरएस समर्थन कैसे संभालते हैं: https://trello.com/1/client.coffee – forivall

+0

संभावित डुप्लिकेट [Ajax jqXHR.status == 0 फिक्स त्रुटि] (http://stackoverflow.com/questions/23802474/ajax-jqxhr-status-0-fix-error) –

उत्तर

1

आप एक XSS CORS मुद्दे में चला रहे हैं। सबसे अच्छा समाधान अपने वेब सर्वर पर प्रॉक्सी सेट करना है, और इसके माध्यम से AJAX कॉल को रूट करना है।

+1

केविनबी के रूप में उल्लेख किया गया; मुझे लगता है कि आप कोर का मतलब है, एक्सएसएस – Alexander

+0

@Alexander सहमत नहीं है। –

+0

मैं अपनी प्रशंसा के लिए एडब्ल्यूएस एपी गेटवे का उपयोग कर रहा हूं ... और यह वही समस्या प्राप्त कर रहा हूं ... क्या आप एक पसंदीदा सीओआरएस नीति सुझा सकते हैं जैसे कि यह त्रुटि हल हो गई है। मैं अब एक साधारण AJAX कॉल का उपयोग कर ryte का परीक्षण कर रहा हूं जो शरीर टैग के 'ऑनलोड' ईवेंट पर चलता है –

2

आपको यह सुनिश्चित करने की ज़रूरत है कि जब सर्वर आपको त्रुटि प्रतिक्रिया भेजता है तो यह उचित सीओआरएस हेडर भी इसके साथ भेजता है।

यदि यह ब्राउज़र नहीं है तो ब्राउज़र आपके जावास्क्रिप्ट कोड को उस डोमेन से आने वाले किसी भी सूचना को देखने की अनुमति नहीं देगा, यहां तक ​​कि स्थिति कोड भी।