【发布时间】:2014-10-21 14:01:49
【问题描述】:
我有一个用于从服务器访问数据的 Web Api 控制器:
public class ServicesController : ApiController
{
[AcceptVerbs("POST")]
public IList<TreeMenuItem> LoadMetadata()
{
List<TreeMenuItem> itemsMenu = new List<TreeMenuItem>();
TreeMenuItem dataSource = new TreeMenuItem("1", "DataSources", null);
itemsMenu.Add(dataSource);
return itemsMenu;
}
}
由 angularJS 控制器调用:
angular.module('App').
controller('TreeMenuController', ["$scope", "$http", treeMenuController]);
function treeMenuController($scope, $http) {
var baseUrl = "api/Services/LoadMetadata";
$http.post(baseUrl)
.then(function (result) {
$scope.roleList = result.data;
});
};
在浏览器网络中我有:
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate
Content-Length:2
Content-Type:application/json;charset=UTF-8
请求负载 {}
响应标头:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 4
在响应选项卡中:[{}]。
怎么了?
【问题讨论】:
-
您确定是
result.data而不仅仅是result? -
我都试过了,看看响应选项卡表单网络浏览器:这是我得到的:{{}]
-
您是否在 Web API 中设置了断点 - 它是否到达那里?您还有其他方法名称 LoadMetadata 吗?
-
为什么不使用 [HttpPost] 而不是 AcceptVerbs。还有你为什么不使用[HttpGet]??
-
正确执行LoadMetada方法
标签: json angularjs asp.net-web-api angular-http