2013-11-01 12 views
5

मैं एक वेब एपीआई विधि में एक साधारण jquery AJAX कॉल करने की कोशिश कर रहा हूं।वेब एपीएक्स पर जेक्री अजाक्स कॉल

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 

     $.ajax({ 
      type: 'POST', 
      url: 'http://redrock.com:6606/api/values/get', 

      dataType: "jsonp", 

      crossDomain: true, 
      success: function (msg) { 

       alert("success"); 

      }, 
      error: function (request, status, error) { 

       alert(error); 
      } 
     }); 
    }); 

</script> 

वेब एपीआई कार्रवाई:

public IEnumerable<string> Get() 
    { 
    return new string[] { "value1", "value2" }; 
    } 

ajax कॉल वेब एपीआई मार नहीं है। मुझे ब्राउज़र कंसोल में निम्न त्रुटि मिलती है।

प्राप्त http://redrock.com:6606/api/values/get?callback=jQuery18207315279033500701_1383300951840&_=1383300951850 400 (ख़राब अनुरोध)

उत्तर

2

आप मार्ग सेटअप के लिए कोड शामिल नहीं है, लेकिन यह सही है यह सोचते हैं यह समस्या शायद तथ्य यह है कि क्या आप नाम दिया WebAPI विधि 'प्राप्त के कारण होता है 'जबकि आप इसे POST अनुरोध का उपयोग करके हिट करने का प्रयास कर रहे हैं। ऐसा इसलिए होता है क्योंकि WebApi कार्रवाई क्रिया से HTTP क्रिया को समझने का प्रयास करता है।

मैं या तो कार्रवाई को नामित करने या [HttpPost] विशेषता को अपनी क्रिया विधि में जोड़ने का सुझाव दूंगा। आप WebApiRouteDebugger पैकेज भी आज़मा सकते हैं।

+0

मैंने एचटीपोस्ट के साथ प्रयास किया लेकिन कोई भाग्य – chamara

2

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

$.getJSON('http://redrock.com:6606/api/values', function(data){ 
    console.log(data); 
}); 

संपादित करें:

एक jsonp मीडिया प्रकार फ़ॉर्मेटर स्थापित करने के लिए इस परियोजना पर एक नजर है: https://github.com/WebApiContrib/WebApiContrib.Formatting.Jsonp

  • डाउनलोड फ़ॉर्मेटर nuget
  • अद्यतन का उपयोग कर रजिस्टर फ़ॉर्मेटर आपका रूट कॉन्फिग
+0

हाय! मुझे एक क्रॉस डोमेन कॉल – chamara

+0

बनाने की आवश्यकता है जब आप नियमित रूप से एक ही डोमेन से प्राप्त करते हैं तो क्या आपका एपीआई डेटा लौटाता है, और आपने jsonp के लिए मीडिया प्रकार फॉर्मेटर सेट अप किया है? – Francis

+0

यह काम कर रहा है जब मैं यूआरएल का उपयोग उसी डोमेन में "/ नियंत्रक/क्रिया" के रूप में करता हूं और डेटाटाइप 'जेसन' के रूप में करता हूं। मुझे jsonp formatter – chamara

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