jquery getjson()ASP.Net WebAPI调用错误的url

时间:2014-02-13 12:27:16

标签: url asp.net-web-api getjson

我正在尝试使用ASP.net webAPI编写Web应用程序并使用IIS进行淘汰。在这里,我尝试在管理页面(http://localhost/Attendance/Home/Admin)上启动视图模型。用于获取所有用户的API位于路径http://localhost/Attendance/user。从浏览器访问时,此URL返回用户。

然而,当我从javascript

下面访问它时
    function adminuservm() {
    //Properties
    self = this;
    self.users = ko.observableArray();
    self.user = ko.observable();
    self.userscount = ko.computed(function () {
        if (self.users == null)
            return 0;
        else
            return self.users.length;    
    }, this);
    //Methods
    //Get all users
    self.getAllUsers = function () {
        $.getJSON("api/user", function (data) {
        })
        .done(function (data) { //success
            if(data != null)
            self.users = $.map(data, function (u) { return new user(u) });
        })
        .fail(function (data) { //error
            alert("error");
        });
    };

    //call getAllUsers to populate all users
    self.getAllUsers();
}

当我给web api资源提供实际路径时,getjson方法没有形成正确的url因此我得到404错误。它调用的URL是http://localhost/Attendance/Home/api/user。 然后我尝试将该代码放在http://localhost/Attendance/Home/Index视图上并在那里工作。

我不想在javascript中使用硬编码的URL。有什么出路吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您需要将URI更改为/Attendance/api/user,如下所示:

self.getAllUsers = function () {
    $.getJSON("/Attendance/api/user")
       .done(function (data) { //success
                if (data != null)
                self.users = $.map(data, function (u) { return new user()});
            })
       .fail(function (data) { //error
                alert("error");
            });
};

同时确保您的WebApiConfig课程中有如下路线。

    config.Routes.MapHttpRoute(
        name: "",
        routeTemplate: "Attendance/api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );