从 js ajax 调用 WebApi 控制器的问题
Posted
技术标签:
【中文标题】从 js ajax 调用 WebApi 控制器的问题【英文标题】:Problem with calling WebApi controller from js ajax 【发布时间】:2019-03-24 09:52:26 【问题描述】:在我的 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)
是否可以不使用完整路径?
【问题讨论】:
看看这个答案,***.com/a/30766123 【参考方案1】:我想知道,ASP.NET MVC 配置是否有错误。 在开发人员环境中,它使用 ajax 调用中的简化 URL。 而且我无法相信微软会强迫开发人员在每个生产系统上调整 URL 地址。
【讨论】:
【参考方案2】:我敢打赌Url.Action
构造会起作用。它与您的路由配置相关联以生成有效的 url。
在 .JS 脚本中
url:'@Url.Action("api","cartitems")',
在.xxhtml中
url:'@Model.YourPostabckUrlVariable',
【讨论】:
噢!你是对的。也许将回发放在模型中。以上是关于从 js ajax 调用 WebApi 控制器的问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 ajax 调用 webapi get 方法时出现 405 错误
Protobuf : WebApi -> JS - 解码对象为空