我正在编写一个小型 ASP.NET MVC 站点,其中还包含我编写的 WEB API。
我已在本地 IIS 上将项目配置为 http://localhost/mysite
在我网站的主页上,我包含了一个我编写的 js 脚本:
<script src="@Url.Content("~/Content/js/home.js")"></script>
在我调用的 js 的页面就绪事件上:
$.ajax({
url: 'api/getdetails',
accepts: 'application/json',
cache: false,
type: 'GET',
success: function (data) {
alert(data);
}
});
当使用 Fidler 查找时,我发现页面调用返回 404,因为它不会尝试将其加载到我所在的相对路径 (http://localhost/mysite
) 并且它尝试加载服务器的根目录 - 所以调用看起来像这样 http://localhost:80/api/getdetails
当我编写 Web 表单时,我经常进行这样的 ajax 调用,而且它总是有效。
我错过了什么?
谢谢
最佳答案
我最终做的是在我的布局 html 中添加了一个 js var:
var baseUrl = '@Url.Content("~/")';
然后在我的 ajax 调用中我添加了该基本 url:
$.ajax({
url: baseUrl + 'api/getdetails',
accepts: 'application/json',
cache: false,
type: 'GET',
success: function (data) {
alert(data);
}
});
无论页面看起来如何,这都可以解决问题。即使我导航到 http://localhost/mysite/home/index
这可能不是完美的解决方案,而且我绝对认为旧的网络表单方式更好 - 但我想任何技术都有利有弊。
仍然很高兴听到有人有更好的解决方案。现在 - 这可以解决问题。
关于javascript - jquery ajax - 调用我的 asp.net web api 给出错误的 url 和 404 未找到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21509161/