Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 快速重定向将页面作为数据发送到$http的成功,而不是重定向到页面_Angularjs_Node.js_Express - Fatal编程技术网

Angularjs 快速重定向将页面作为数据发送到$http的成功,而不是重定向到页面

Angularjs 快速重定向将页面作为数据发送到$http的成功,而不是重定向到页面,angularjs,node.js,express,Angularjs,Node.js,Express,验证用户后,客户端将在result中获取home.html的页面内容,而不是重定向到home.html 客户端呼叫: $http({ method: "post", url: "http://localhost:2222/validateUser", data: { username: $scope.username, password: $scope.password } }).then(function (result) { if (result.data &

验证用户后,客户端将在
result
中获取
home.html
的页面内容,而不是重定向到
home.html

客户端呼叫:

$http({
method: "post",
url: "http://localhost:2222/validateUser",
data: {
    username: $scope.username,
    password: $scope.password
}

}).then(function (result) {
    if (result.data && result.data.length) {
        alert('User validated');
    } else {
        alert('invalid user');
    }
});
服务器端控制器方法:

module.exports.validateUser = function (req, res) {
  User.find({ 'username': req.body.username, 'password': req.body.password }, function (err, result) {
    if (result.length) {
        req.session.user = result[0]._doc;
        res.redirect('/home');
    }else{
        res.json(result);
    }
  });
};
app.js中的路由:

app.get('/home', function (req, res) {
    var path = require('path');
    res.sendFile(path.resolve('server/views/home.html'));
});

您可以将重定向逻辑移动到客户端

客户:

$http({
    method: "post",
    url: "http://localhost:2222/validateUser",
    data: {
        username: $scope.username,
        password: $scope.password
    },
}).then(function (result) {
    alert('user validated');
    window.location.replace('/home');
}).catch(function(result) {
    alert('login failed');
});
服务器:

module.exports.validateUser = function (req, res) {
  User.find({ 'username': req.body.username, 'password': req.body.password }, function (err, result) {
    if (result.length) {
        req.session.user = result[0]._doc;
        res.send('OK');
    } else {
        // responding with a non-20x or 30x response code will cause the promise to fail on the client.
        res.status(401).json(result);
    }
  });
};

试试这个:res.redirect(path.resolve('server/views/home.html');不能从AJAX执行浏览器重定向。您需要检查它是否应该重定向,并在客户端上执行。在客户端上移动重定向逻辑真的是一种好的做法吗?是否有解决方法?