jquery ajax - 调用我的asp.net web api给出了一个错误的url和404找不到的消息

dev*_*r82 2 javascript ajax asp.net-mvc jquery asp.net-web-api

我正在编写一个小型ASP.NET MVC站点,其中还包含我编写的WEB API.

我在我的本地IIS上配置了项目 http://localhost/mysite

在我的网站的主页上,我包括一个我写的js脚本:

<script src="@Url.Content("~/Content/js/home.js")"></script>
Run Code Online (Sandbox Code Playgroud)

在我打电话的那个js的页面就绪事件上:

$.ajax({
    url: 'api/getdetails',
    accepts: 'application/json',
    cache: false,
    type: 'GET',
    success: function (data) {
        alert(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

当用Fidler查看时,我看到页面调用返回404,因为它不会尝试将其加载到我所在的相对路径(http://localhost/mysite)并尝试加载服务器的根目录 - 所以调用看起来像这样http://localhost:80/api/getdetails

当我在编写Web表单时,我曾经一直在做这样的ajax调用,而且它始终有效.

我错过了什么?

谢谢

dev*_*r82 11

我最终做的是在我的布局html我添加了一个js var:

var baseUrl = '@Url.Content("~/")';
Run Code Online (Sandbox Code Playgroud)

然后在我的ajax调用上我添加了基本URL:

$.ajax({
    url: baseUrl + 'api/getdetails',
    accepts: 'application/json',
    cache: false,
    type: 'GET',
    success: function (data) {
        alert(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

无论页面如何,这都可以解决问题.即使我导航到http://localhost/mysite/home/index

它可能不是完美的解决方案,我绝对认为旧的webforms工作方式更好 - 但我想任何技术都有利弊.

如果有人有更好的解决方案,仍然会很高兴听到.现在 - 这就是诀窍.