簡體   English   中英

Jquery Ajax調用WEB API

[英]Jquery Ajax Call to WEB API

我正在嘗試對WEB API方法進行簡單的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>

WEB API動作:

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

ajax調用沒有訪問WEB API。 我在瀏覽器控制台中收到以下錯誤。

獲取http://redrock.com:6606/api/values/get?callback=jQuery18207315279033500701_1383300951840&_=1383300951850 400(錯誤請求)

您沒有包含路由設置的代碼,但假設它是正確的,問題可能是由於您在嘗試使用POST請求命中時將WebApi方法命名為“Get”。 發生這種情況是因為WebApi試圖從動作名稱中找出HTTP動詞。

我建議重命名操作或將[HttpPost]屬性添加到您的操作方法。 您也可以嘗試使用WebApiRouteDebugger包。

除非您正在進行跨域調用,否則無需使用jsonp(jsonp還需要Web API中的自定義格式化程序)。

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

編輯:

要安裝jsonp媒體類型格式化程序,請查看此項目: https//github.com/WebApiContrib/WebApiContrib.Formatting.Jsonp

  • 使用nuget下載格式化程序
  • 注冊格式化程序
  • 更新您的routeconfig

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM