未从服务器获取响应.Angularjs,nodejs

Not getting response from server. Angularjs, nodejs

本文关键字:Angularjs nodejs 响应 获取 服务器      更新时间:2023-09-26

我正试图从服务器到客户端获得"成功"或"失败"响应。服务器在express框架中的node.js中实现,客户端在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 && 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",因为这是我在sql数据库中输入的内容。具体来说,我不知道为什么登录页面没有链接到我指定路径的team_list页面。

我真的不知道为什么它不起作用。如果我应该以不同的方式使用json,我会感谢更多的帮助,因为我不太熟悉它。

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 && 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'));
});

检查您的控制台,您甚至可以从那里找出问题。控制台的快捷方式

打开不同浏览器控制台的快捷键

这样做

connection.query("select * from user where login_name = ?", user, function(err, rows, fields) {
     if (!err){
        if(user==rows[0].login_name && 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)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>