У меня есть веб-сервер с данными JSON. Это то, что мои данные выглядитСравнение ввода пользователя с некоторыми полями в массиве объектов 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 достаточно хорошо, чтобы найти проблему. Любая помощь действительно ценится, спасибо.
Edit 1
После того, что сказал Nujabes я сделал некоторые изменения, так как я не нужно $ объем.
//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 может хранить данные, и именно поэтому я все еще получаю ошибки. Я думаю, что это должно быть в массиве.
добавив $ объем в верхней части вызывает мой логин экран не показывать.Я все еще совершенно новичок во всем этом мире. Таким образом, я могу избавиться от области действия вместе и хранить данные из моего HTTP-запроса в массиве, возможно? –
Можете ли вы показать мне сообщение, с которым вы столкнулись в своей консоли? Вы сказали, что ваш экран входа в систему не отображается, а затем проверьте консоль. Я хочу увидеть это сообщение. – nujabes
Можете ли вы сделать это? определить var userArr = [] код выше и в функции обратного вызова userArr = result.data; – nujabes