2012-03-27 6 views
6
jQuery.ajax({ 
      type: "GET", 
      url: 'http://example.com/restaurant/VeryLogin(username,password)', 
      dataType: "json", 

      success: function (data) { 
       alert(data); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert("error"); 
      } 
     }); 

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

किसी भी मदद की सराहना की।

उत्तर

9

जावास्क्रिप्ट एक ही डोमेन नीति के अधीन है। इसका मतलब सुरक्षा के लिए एक क्लाइंट ब्राउज़र में जेएस स्क्रिप्ट केवल उसी डोमेन तक पहुंच सकता है जैसा वह आया था।

JSONP एक ही प्रतिबंध के अधीन नहीं है।

यहाँ JSONP पर jQuery डॉक्स की जाँच करें:

http://api.jquery.com/jQuery.getJSON/

यहाँ JQuery AJAX के माध्यम से एक क्रॉस-डोमेन सेवा का उपयोग करने JSONP का उपयोग करने का एक काम उदाहरण है:

http://jsbin.com/idasay/4

और बस जेएसबीआईएन भविष्य में इस पेस्ट को हटा देता है:

jQuery.ajax({ 
    type: "GET", 
    url: 'http://api.geonames.org/postalCodeLookupJSON?postalcode=6600&country=AT&username=demo', 
    dataType: "jsonp", 
    cache: false, 
    crossDomain: true, 
    processData: true, 


    success: function (data) { 
     alert(JSON.stringify(data)); 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     alert("error"); 
    } 
}); 
+0

मैंने पहले से ही लिंक का पालन किया है, लेकिन इसने परिणाम नहीं दिया। – tiru

+0

पहले पोस्ट किए गए लिंक से: "ब्राउज़र सुरक्षा प्रतिबंधों के कारण, अधिकांश" अजाक्स "अनुरोध एक ही मूल नीति के अधीन हैं; अनुरोध किसी भिन्न डोमेन, सबडोमेन या प्रोटोकॉल से डेटा सफलतापूर्वक पुनर्प्राप्त नहीं कर सकता है। स्क्रिप्ट और JSONP अनुरोध एक ही मूल नीति प्रतिबंध के अधीन नहीं हैं। " –

+0

मैं सलाह देता हूं कि उपरोक्त लिंक पर JSONP उदाहरण का उपयोग करने के लिए आपको क्या चाहिए। –

0

जेसनपी डाटाटाइप की तलाश करें।

jQuery.ajax({ 
     type: "GET", 
     url: 'http://xxx.com/restaurant/VeryLogin(username,password)', 
     dataType: "jsonp", 
    cache: false, 
     crossDomain: true, 
    processData: true, 

     success: function (data) { 
      alert(data); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert("error"); 
     } 
    }); 
+0

मैंने आपके परिवर्तनों का पालन किया अभी तक कोई परिणाम नहीं है। – tiru

+0

आपको जेसनपी के बारे में पढ़ना होगा। फिर भी, जिस पृष्ठ पर आप कॉल कर रहे हैं वह jsonp डेटा वापस नहीं कर रहा है। –

2

यह Ajax उपयोग करने के लिए क्रॉस-डोमेन डेटा बैकएंड बदले बिना सीधे प्राप्त करने के लिए असंभव है। इसे Same origin policy कहा जाता है।

आप बैकएंड (how do to this) में विशेष शीर्षलेख Access-Control-Allow-Origin सेट कर सकते हैं। या आप JSONP का उपयोग कर सकते हैं] (http://en.wikipedia.org/wiki/JSONP)। http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

यह सिर्फ मुझे एक बहुत मदद की .... किसी भी प्रश्न के लिए टिप्पणियों को गोली मार:

0

यहाँ प्राप्त और पोस्ट क्रॉस-डोमेन कॉल करने के लिए एक शानदार लेख है।

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