我有一个简单的问题。当我在角度控制器中使用$ http.get时,如何使用结果中的特定值?让我们说我收到用户名和密码,我想分别比较每一个。
app.controller("loginController", function ($scope, $http) {
$scope.submit = function () {
$http.get("../Views/userAuthentecation.aspx")
.then(function (response) {
$scope.members = response.data;
});
}
});
从上面的控制器中,我使用userAuthentecation.aspx
从后面的代码中读取数据库,并将结果显示为json格式。因此,$scope.members
实际上是一个包含用户名和密码的json格式数据。
答案 0 :(得分:1)
通常我们会像你一样为单个对象分配一个完整的响应
Invalid conversion from 'int' to 'int*'
但是,如果你在$scope.members = response.data;
中有3个对象,并且你希望它们都在不同的对象中,那么你可以简单地将它们分配给不同的对象,如下所示
response.data
将数据分配给$scope.id = response.data.id;
$scope.username = response.data.username;
$scope.members = response.data.password;
后,无论您喜欢什么,都可以使用它。但由于您在控制器中有身份验证代码,我想您正在尝试创建身份验证系统。好吧,在这种情况下,一旦填写了登录表单,就会将其发送到控制器中的一个功能进行身份验证,例如
$scope.objects
一旦控制器获得请求,您可以在同一个函数中处理它,或者您可以将它发送到身份验证服务,该服务通常是执行特定任务的工厂,在这种情况下它将检查用户的信用。
<form name="form" ng-submit="login()" role="form">
上述函数正在调用另一个工厂来验证用户凭据,将调用工厂$scope.login = function () {
$scope.dataLoading = true;
AuthenticationService.Login($scope.username, $scope.password, function(response) {
if(response.success) {
AuthenticationService.SetCredentials($scope.username, $scope.password);
$location.path('/');
} else {
$scope.error = response.message;
$scope.dataLoading = false;
}
});
};
,它将把参数传递给AuthenticationService
函数。工厂内的功能可以像这样调用
Login()
一旦检查并验证凭据并且响应代码为200,这意味着AuthenticationService.login()
然后输入的信用卡将被传递到
ok
将生成加密的cookie
希望这会对认证和比较响应数据有所了解,可以找到整个workig认证示例here