从js ajax调用WebApi控制器的问题

时间:2018-10-19 13:36:05

标签: c# ajax asp.net-mvc asp.net-web-api

在我的ASP.NET MVC应用程序中,我在通过ajax语句调用WebAPI控制器时遇到问题。

这是我的代码:

    $.ajax({
        url: 'api/cartitems',
        type: self.cartItem.id == null ? 'post' : 'put',
        contentType: 'application/json',
        data: ko.toJSON(data)
    })
    .done(self.successfulSave)
    .fail(self.errorSave)

它会产生错误404-找不到文件。

我已经测试了不同的可能性,只有一种可行的方法是使用整个URL路径。

    $.ajax({
        url: 'http://xx.yyy.zz.vvv/APP_NAME/api/cartitems',
        type: self.cartItem.id == null ? 'post' : 'put',
        contentType: 'application/json',
        data: ko.toJSON(data)
    })
    .done(self.successfulSave)
    .fail(self.errorSave)

是否可以不使用完整路径?

2 个答案:

答案 0 :(得分:1)

我想知道ASP.NET MVC配置是否存在错误。 在开发人员环境中,它可以在ajax调用中使用简化的URL。 而且我无法相信Microsoft会强迫开发人员在每个生产系统上调整URL地址。

答案 1 :(得分:0)

我敢打赌Url.Action构造会起作用。它与您的路由配置相关联以生成有效的网址。

在.JS脚本中

 url:'@Url.Action("api","cartitems")',

在.xxhtml

url:'@Model.YourPostabckUrlVariable',