由于在发送到服务器之前添加了URL,AJAX请求变得无效

时间:2015-11-10 11:03:27

标签: ajax asp.net-mvc http

我对ASP.NET MVC 5中的api控制器的ajax请求有问题。

我的情况是这样的:

我有一个像这样的api控制器:

[RoutePrefix("api/organizations/{orgId:int}/students")]
class StudentController{

        [Route("subjects")]
        [HttpGet]
        public HttpResponseMessage GetSubjects(int orgId)
        {
        }

}

在我的.js文件中,我有一个代码用于调用具有指定URL的请求,如下所示:

var baseURL = "api/organizations/" + $("#orgId").val() + "/students";

$.get(baseURL + "/subjects").done(function (subjects) {
            $.each(subjects, function (index, val) {

                var vm = new SubjectVM();

                vm.Id(val.Id);
                vm.Name(val.Name);

                self.Subjects.push(vm);
            });
        });

但问题是它不会进入该控制器方法,因为它的网址看起来像http://localhost:10927/students/api/organizations/15/students/subjects

它应该是这样的http://localhost:10927/api/organizations/15/students/subjects所以它会进入。

我感到困惑的是,当我在学生主页中使用这个http://localhost:10927的网址时,一切都很好。它产生的网址是正确的。但是当我在http://localhost:10927/student/create页面上时,它会生成所述网址。

这里有没有人知道发生了什么?希望你能在这里帮助我。

谢谢。

1 个答案:

答案 0 :(得分:1)

将您的baseURL变量改为以正斜杠开头:/
这样做会强制从主机的根目录而不是当前目录构建URL。