【发布时间】:2015-07-01 09:36:19
【问题描述】:
我有一个包含 JSON 数据的网络服务器。这就是我的数据的样子
[
{
iduser: 1,
username: "joe",
password: "****"
},
{
iduser: 2,
username: "gina",
password: "****"
}
]
在我的应用程序中,我接受了一些用户输入并希望将其与用户名和密码字段进行比较。这是我检查数据的地方
.service('LoginService', function ($q, $http) {
return {
loginUser: function (name, pw) {
var deferred = $q.defer();
var promise = deferred.promise;
var user_data = $http.get("http://<my ip address>:<port>/login");
user_data.then(function ($scope, result) {
$scope.user = result.data;
})
for (var x in $scope.user) {
if (name == x.username && pw == x.password) {
deferred.resolve('Welcome ' + name + '!');
} else {
deferred.reject('Wrong credentials.');
}
}
promise.success = function (fn) {
promise.then(fn);
return promise;
}
promise.error = function (fn) {
promise.then(null, fn);
return promise;
}
return promise;
}
}
})
我仍在学习 angularJS,我知道这不是检查数据的安全方法,我只想让这个循环正常工作。
我对这里的理解是 $scope.user 保存我的 JSON 数据。然后使用 for 循环循环数据,并将用户输入名称与每次迭代的字段用户名进行比较。但事实并非如此,因为我每次都失败了。
我几乎可以肯定这是一个语法错误,但我对 JavaScript 或 AngularJS 的了解还不够,无法找到问题所在。非常感谢任何帮助,谢谢。
编辑 1
在 Nujabes 说之后,我做了一些更改,因为我不需要 $scope。
//previous code the same
user_data.then(function (result) {
var user = result.data;
})
for (var x in user) {
if (name == x.username && pw == x.password) {
//prior code the same
我不认为 var 可以保存数据,这就是为什么我仍然会出错。我认为它应该在一个数组中。
【问题讨论】: