Jquery Ajax调用WEB API

我正在尝试对WEB API方法进行简单的jquery ajax调用。

  $(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); } }); });  

WEB API动作:

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

ajax调用没有访问WEB API。 我在浏览器控制台中收到以下错误。

获取http://redrock.com:6606/api/values/get?callback=jQuery18207315279033500701_1383300951840&_=1383300951850 400(错误请求)

除非您正在进行跨域调用,否则无需使用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

您没有包含路由设置的代码,但假设它是正确的,问题可能是由于您在尝试使用POST请求命中时将WebApi方法命名为“Get”。 发生这种情况是因为WebApi试图从动作名称中找出HTTP动词。

我建议重命名动作或将[HttpPost]属性添加到您的动作方法。 您也可以尝试使用WebApiRouteDebugger包。