无法从asp.net web api的控制器中的请求ajax获取数据

时间:2014-12-18 03:53:29

标签: asp.net-web-api

当我向api的控制器请求时,我遇到了很多问题,我认为问题仍然存在于配置api中。

当我创建具有ValuesController的普通web api时。

  • 对于ValuesController,我创建了一个请求ajax,如下所示,我不需要跨域,只是简单。

    $.ajax({
      type: "delete",
      url: "http://localhost/api/values/4",
      success: function (data) {
        console.log(data)
      }
    })
    

就像上面一样,我可以正常获取数据但是

  • 对于项目需要Controller中的EnableCors

    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class ValuesController : ApiController
    {
        [HttpDelete]
        public HttpResponseMessage Delete([FromUri] Int64 ID1, [FromUri] Int64 ID2)
        { 
        }
    }
    

    我无法从ajax请求获取数据表格,如下所示:

    $.ajax({
         type: 'delete',
         url: 'http://localhost/api/values/1/2',
         crossDomain: true,
         success: function () {
         }
    });
    

$.ajax({
     type: 'delete',
     url: 'http://localhost/api/values/',
     data: {ID1 : 1, ID2: 2},
     crossDomain: true,
     success: function () {
     }
});

感谢。 ^ _ ^

1 个答案:

答案 0 :(得分:0)

启用cors与您拥有的删除问题无关。

这里的问题是,你在Uri中传递了多个id(fromUri),通常你需要在url中传递一个id。

将删除方法更改为:

[HttpDelete]
public HttpResponseMessage Delete(int id)
{
    // your code goes here
}

并且对于您的请求,这应该有效

$.ajax({
  type: "delete",
  url: "http://localhost/api/values/4",
  success: function (data) {
    console.log(data)
  }
});

希望这会有所帮助。