2013-09-30 13 views
12

तो यहाँ मेरी कॉल है। आप देखेंगे कि मेरे पास डेटा सेट नहीं है। मुझे यकीन नहीं है कि डेटाटाइप सही तरीके से काम कर रहा है क्योंकि वास्तव में इसका एक्सएमएल वापस आ रहा है, लेकिन मैंने भी कोशिश की। यह sportsdata के एपीआई के लिए एक कॉल है। साइट पर, वे आपको x-originating-ip का अनुरोध हेडर दिखाते हैं, इसलिए मैंने कोशिश की है कि एक्सेस-कंट्रोल-अनुमति-उत्पत्ति है।jquery.ajax पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति

यह सब अभी भी एक्सेस-कंट्रोल त्रुटि लौटा दिया। मैं स्पष्ट नहीं हूं कि अगर मैं इसे सेट करता हूं तो डेटा क्या है, इसलिए मैंने इसे अभी छोड़ दिया है। मैंने कुछ अलग-अलग चीजों को करने की कोशिश की है, मैं समझता हूं कि मुझे त्रुटि क्यों मिल रही है। मुझे नहीं पता कि इसे कैसे ठीक किया जाए। मैं कहने की आवश्यकता नहीं करने की कोशिश की है, लेकिन अगर किसी को समझाने या मुझे रास्ता दिखा सकता है कि हो सकता है बहुत सराहना

+4

सर्वर अभिगम नियंत्रण हैडर, नहीं ग्राहक स्थापित करने के लिए है। –

+0

अच्छी तरह से मैं खराब कर रहा हूँ? क्योंकि यह मेरी स्थानीय मशीन पर कॉल नहीं है। सर्वर स्थानीय नहीं है, लेकिन मैंने इसे अन्य पदों पर पढ़ा है। क्यों, अगर मैं सीधे ब्राउज़र में अपना यूआरएल टाइप करता हूं, तो कॉल काम करता है, लेकिन jquery के साथ यह नहीं करता है? – dwarf

+0

इसके अलावा, यदि आप JSONP की अपेक्षा करने के लिए jQuery को बताते हैं, तो सर्वर को JSONP वापस करना होगा, एक्सएमएल नहीं। –

उत्तर

8

http://encosia.com/using-cors-to-access-asp-net-services-across-domains/

क्रॉस डोमेन संसाधन वितरण पर अधिक जानकारी के लिए ऊपर दिए गए लिंक का संदर्भ लें।

आप JSONP का उपयोग करने का प्रयास कर सकते हैं। यदि एपीआई जेसनपी का समर्थन नहीं कर रहा है, तो आपको एक ऐसी सेवा बनाना है जो एपीआई और आपके क्लाइंट के बीच मध्यस्थ के रूप में कार्य करे। मेरे मामले में, मैंने एक एएसएमएक्स सेवा बनाई है।

नमूना नीचे:

ajax कॉल:

$(document).ready(function() { 
     $.ajax({ 
      crossDomain: true, 
      type:"GET", 
      contentType: "application/json; charset=utf-8", 
      async:false, 
      url: "<your middle man service url here>/GetQuote?callback=?", 
      data: { symbol: 'ctsh' }, 
      dataType: "jsonp",     
      jsonpCallback: 'fnsuccesscallback' 
     }); 
    }); 

सेवा (ASMX) जो jsonp वापस आ जाएगी:

[WebMethod] 
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 
    public void GetQuote(String symbol,string callback) 
    {   

     WebProxy myProxy = new WebProxy("<proxy url here>", true); 

     myProxy.Credentials = new System.Net.NetworkCredential("username", "password", "domain"); 
     StockQuoteProxy.StockQuote SQ = new StockQuoteProxy.StockQuote(); 
     SQ.Proxy = myProxy; 
     String result = SQ.GetQuote(symbol); 
     StringBuilder sb = new StringBuilder(); 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     sb.Append(callback + "("); 
     sb.Append(js.Serialize(result)); 
     sb.Append(");"); 
     Context.Response.Clear(); 
     Context.Response.ContentType = "application/json"; 
     Context.Response.Write(sb.ToString()); 
     Context.Response.End();   
    } 
+0

'async: झूठा 'कभी नहीं, कभी, कभी ऐसा करें – Liam

-1

मेरे काम में हम एक अलग पोर्ट संख्या पर हमारे शोकहारा सेवाओं और डेटा AS400s की एक जोड़ी पर db2 में रहता है। हम आम तौर पर $.getJSON AJAX विधि का उपयोग करते हैं क्योंकि यह आसानी से ?callback=? का उपयोग कर JSONP को CORS के साथ कोई समस्या नहीं देता है।

data ='USER=<?echo trim($USER)?>' + 
     '&QRYTYPE=' + $("input[name=QRYTYPE]:checked").val(); 

     //Call the REST program/method returns: JSONP 
     $.getJSON("http://www.stackoverflow.com/rest/resttest?callback=?",data) 
     .done(function(json) {   

       // loading... 
       if ($.trim(json.ERROR) != '') { 
        $("#error-msg").text(message).show(); 
       } 
       else{ 
        $(".error").hide(); 
        $("#jsonp").text(json.whatever); 

       } 

     }) 
     .fail(function(jqXHR, textStatus, error) { 
     var err = textStatus + ", " + error; 
     alert('Unable to Connect to Server.\n Try again Later.\n Request Failed: ' + err); 
     });  
संबंधित मुद्दे