我有一个角度应用程序,我试图从服务器获取用户列表。我遇到了一个问题。我有页面调用CurrentUsers。如果CurrentUsers方法返回一个Json对象,则无论我在应用程序控制器和html页面中做什么,整个对象都会显示在页面上。如果该方法返回一个视图,它不会显示任何内容。但是,我可以在cotroller中硬编码json对象,并且它可以正常工作。 因此,我创建了另一个返回json对象的方法。我打了一个电话给那个方法,但是它没有到达服务器。您的帮助将非常感谢。AngularJS获取方法不起作用
的CurrentUsers方法返回JSON对象,在屏幕上的整个JSON对象显示,而不管
[HttpGet]
public JsonResult CurrentUsers()
{
List<Users> currentUser = new List<Users>()
{
new Users{ UserName = "JDoe", Professor="SSmith", Course = "English1"},
new Users{ UserName = "ADan", Professor="SDhor", Course = "Science"},
new Users{ UserName = "ADes", Professor="SCarry", Course = "Religion101"},
new Users{ UserName = "DJay", Professor="SCrowe", Course = "Teaching101"},
new Users{ UserName = "MAnne", Professor="TRow", Course = "PreCalc"},
};
return Json(new { Ok = true, data= currentUser });
// return View();
}
如果上述方法返回一个视图,我可以修改如下所示的控制器作为 ,和我会看到相应的信息
Registration.controller('CurrentUsersController', function ($scope, $http) {
$scope.currentUsers = [{ "Professor": "SSmith", "UserName": "JDoe", "Course": "English1" }, { "Professor": "SDhor", "UserName": "ADan", "Course": "Science" }, { "Professor": "SCarry", "UserName": "ADes", "Course": "Religion101" }]
});
我修改了控制器使用Servi大街并创建了下面的方法来读取当前用户,以便该视图可以简单地返回一个View()。但是,我无法获得'GET'的工作。
[HttpGet]
public JsonResult GetUsers()
{
List<Users> currentUser = new List<Users>()
{
new Users{ UserName = "JDoe", Professor="SSmith", Course = "English1"},
new Users{ UserName = "ADan", Professor="SDhor", Course = "Science"},
new Users{ UserName = "ADes", Professor="SCarry", Course = "Religion101"},
new Users{ UserName = "DJay", Professor="SCrowe", Course = "Teaching101"},
new Users{ UserName = "MAnne", Professor="TRow", Course = "PreCalc"},
};
return Json(new { Ok = true, data = currentUser , message =
"Success"}, JsonRequestBehavior.AllowGet);
}
的修改CurrentUsers方法返回一个视图
public ActionResult CurrentUsers()
{
return View();
}
我修改控制器
Registration.controller('CurrentUsersController', function ($scope, GetUSerService) {
$scope.message = 'this is the Current User controller';
$scope.currentUsers = [];
var result = GetUSerService.getData()
.then(function (result) {
console.log('the result');
console.log(result.data);
});
});
我的服务
Registration.service('GetUSerService', function ($http,$q) {
this.getData = function() {
var deferredObject = $q.defer();
$http.get('/Home/GetUsers').
success(function (data) {
console.log('service call data');
console.log(data);
deferredObject.resolve({ success: true, data : data.data });
}).
error(function() {
deferredObject.resolve({ success: false, data : '' });
});
return deferredObject.promise;
};
});
Updated 10/6 @ 5:50 @FernandoPinheiro答案适合我。唯一的是GetUsers操作被调用两次。
更新10/7
我想通了,为什么后正在做两次。在我的模板上,我有ng-app =“注册”,并且我有ng-controller =“CurrentUsersController”。因为我在路由提供程序中指定了控制器名称,所以我不需要将它添加到局部视图中。只要我从视图中删除它,它就按预期工作。
:)发生在每个程序员,对吗? :P – Swag
当然!有时我们只需要另一双眼睛:) :) –
我正在玩$ http调用,这是你看到帖子而不是获取的原因。就行动而言,我没有为它设定路线。 –