#javascript #html #angularjs #node.js #web-development-server
#javascript #HTML #angularjs #node.js #веб-разработка-сервер
Вопрос:
Я пытаюсь получить ответ «успех» или «сбой» от моего сервера клиенту. Сервер внедряется в node.js в express framework и клиент в angularjs.
Вот серверная часть node.js часть:
connection.connect();
/* GET home page. */
router.get('/', function(req, res, next) {
res.sendFile(path.join(__dirname, '../', 'views', 'login.html'));
});
router.get('/login', function(req,res)
{
console.log("Username:" req.query.username);
console.log("Password:" req.query.password);
var user = req.query.username;
var pass = req.query.password
connection.query("select * from user where login_name = ?", user, function(err, rows, fields) {
if (!err){
if(user==rows[0].login_name amp;amp; pass==rows[0].pass){
console.log("success");
res.json({status: 200});
}
}
else
console.log('Error while performing Query.', err);
});
и вот часть angularjs:
<form name="login">
<div class="login" ng-app="loginPage" ng-controller="loginController">
<input type="text" placeholder="username" ng-model="uname" name="userid"><br>
<input type="password" placeholder="password" ng-model="pword" name="pswrd"><br>
<!--<input type="button" ng-click="login();" onclick="check(this.form)" value="Login"/>-->
<button ng-click="login();">Login</button>
</div>
</form>
<script language="javascript">
var app = angular.module('loginPage', []);
app.controller('loginController', function($scope, $http) {
console.log("inside controller");
$scope.login = function() {
console.log("inside the login function");
console.log($scope.uname);
var verify = $http({
method: 'GET',
url: '/login'
'',
params: { username: $scope.uname, password: $scope.pword }
}).then(
function successful(response) {
$scope.theResponse = response.data;
window.open("./team_list.html")
}, function unsuccessful(response) {
alert('Wrong username/password.');
$scope.theResponse = response.data;
});
}
})
</script>
Я пытаюсь ввести «test» для имени пользователя и «test» для pw на странице входа в систему в браузере, потому что это то, что я ввел в свою базу данных sql. В частности, я не уверен, почему страница входа в систему не ссылается на страницу team_list, для которой я указал путь.
Я не совсем уверен, почему это не работает. Если я должен использовать json по-другому, я был бы признателен за дополнительную помощь, потому что я не очень хорошо знаком с ним.
Комментарии:
1. почему вы назначаете http-вызов переменной «verify»
2. что вы получаете со стороны сервера? можете ли вы получить данные пользователя с помощью запроса?
Ответ №1:
Порядок маршрутизации на стороне NodeJS неверен. Это /login
должно быть первым. Иначе все будет обслуживаться '/'
маршрутом.
router.get('/login', function(req, res) {
console.log("Username:" req.query.username);
console.log("Password:" req.query.password);
var user = req.query.username;
var pass = req.query.password
connection.query("select * from user where login_name = ?", user, function(err, rows, fields) {
if (!err) {
if (user == rows[0].login_name amp;amp; pass == rows[0].pass) {
console.log("success");
res.json({
status: 200
});
}
} else
console.log('Error while performing Query.', err);
});
/* GET home page. */
router.get('/', function(req, res, next) {
res.sendFile(path.join(__dirname, '../', 'views', 'login.html'));
});
Комментарии:
1. #Arun .. Я не думаю, что ваш ответ подходит.. Здесь нет ничего общего с позиционированием кода….
Ответ №2:
Проверьте свою консоль, вы даже можете выяснить проблему оттуда. Ярлыки для консоли
Ответ №3:
сделайте это так :
connection.query("select * from user where login_name = ?", user, function(err, rows, fields) {
if (!err){
if(user==rows[0].login_name amp;amp; pass==rows[0].pass){
console.log("success");
res.send(200);
}
}
else{
console.log('Error while performing Query.', err);
res.send(401);
}
});
На самом деле, вы должны отправить код ошибки или успеха, например 200 или 401.
И используйте res.send(ErrorCode)
or res.sendStatus(ErrorCode)
, и он автоматически сделает это за вас на стороне клиента, как показано ниже :
<script language="javascript">
var app = angular.module('loginPage', []);
app.controller('loginController', function($scope, $http, $window) {
console.log("inside controller");
$scope.login = function() {
console.log("inside the login function");
console.log($scope.uname);
$http.get('/login').then(function (success) {
$window.alert('Success');
}, function (error) {
$window.alert('Wrong username/password.');
});
}
});
</script>