Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery getjson()ASP.Net WebAPI调用错误的url_Url_Asp.net Web Api_Getjson - Fatal编程技术网

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

jquery getjson()ASP.Net WebAPI调用错误的url,url,asp.net-web-api,getjson,Url,Asp.net Web Api,Getjson,我正在尝试用ASP.NETWebAPI和knockout编写web应用程序,并使用IIS。在这里,我尝试在管理页面上启动视图模型(http://localhost/Attendance/Home/Admin)。获取所有用户的API位于路径http://localhost/Attendance/user。从浏览器访问时,此url返回用户 但是当我从下面的javascript访问它时 function adminuservm() { //Properties self = t

我正在尝试用ASP.NETWebAPI和knockout编写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
view,它在那里工作

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


提前谢谢。

您需要将URI更改为
/attention/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 }
    );

您说过API url是
http://localhost/Attendance/user
所以您的getJSON url应该是
/attention/user
。请尝试一下,并让我们知道结果。您使用的是MVC还是WebApi?您的URL指的是MVC,但您的代码是关于WebAPI的。我也是confused@rober字体哦,对不起,这是错误的。我的API url是@Dalorzo:我在同一个项目中使用MVC4和asp.net Web API。