2014-02-13 52 views
2

我正在嘗試使用ASP.net webAPI編寫web應用程序,並使用IIS。這裏我試圖在管理頁面(http://localhost/Attendance/Home/Admin)上啓動查看模型。獲取所有用戶的API位於路徑http://localhost/Attendance/user。該網址從瀏覽器訪問時返回用戶。jquery getjson()ASP.Net WebAPI調用錯誤的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(); 
} 

該方法的getJSON下面訪問沒有形成正確的URL,當我給網絡API資源realtive路徑因此我得到404錯誤。它所調用的URL是http://localhost/Attendance/Home/api/user。 然後我試着把代碼放在http://localhost/Attendance/Home/Index視圖上,它在那裏工作。

我不想在JavaScript中使用硬編碼的URL。有什麼出路嗎?

預先感謝您。

+0

你說API url是'http:// localhost/Attendance/user'so你的getJSON url可能應該是'/ Attendance/user'。請嘗試一下,讓我們知道結果。 –

+0

你使用MVC還是WebApi?您的網址是指MVC,但您的代碼是關於WebAPI的。所以我很困惑 – Dalorzo

+0

@rober:哦,我很抱歉,它的錯誤在那裏。我的API網址是http:// localhost/Attendance/api/user – Mahesh

回答

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 } 
    );