尝试通过angularjs发出请求后,从节点js渲染页面

时间:2016-10-02 22:42:44

标签: javascript jquery angularjs node.js

我试图在角度控制器的post请求之后从nodejs渲染页面。但是,页面不会加载并保持在同一页面上。控制台中没有错误。此外,在浏览器开发人员工具中,我可以看到网络 - 预览部分下加载的页面。 这是正确的还是建议的方式?我想,控件回到控制器而不是从节点渲染页面。我们可以避免这种情况还是有更好的方法来做到这一点? 任何帮助表示赞赏。

来自控制器的发布请求:

$http({

                method : "POST",
                url: '/afterSignin',
                data: {
                        "inputUsername": $scope.inputUsername,
                        "inputPassword": $scope.inputPassword

                    }

                }).success(function(data)
                    {

                            if(data.statusCode==401)
                            {
                                $scope.msg = "Invalid Username or Password";
                            }

                            else
                            {
                                console.log(data.statusCode);
                                console.log("login successfull");


                            }

服务器端代码(afterSignIn.js)

mysql.fetchData(function(err,results){
        if(err){
            throw err;
        }
        else 
        {
            if(results.length > 0){
                console.log("valid Login");

                     res.render('successLogin', { data: results } , function(err, result) {

                    // render on success
                    if (!err) {
                        res.end(result);
                    }
                    // render or error
                    else {
                        res.end('An error occurred');
                        console.log(err);
                    }
                });

控制台输出:

连接已关闭.. 数据库结果:[对象] 有效登录 [0mPOST / afterSignin [32m200 [0m103.425 ms -

Chrome Console Output

1 个答案:

答案 0 :(得分:1)

Look at this answer 有很多很好的解决方案。可能最简单的是替换窗口的URL:

$http({
    method : "POST",
    url: '/afterSignin',
    data: {
            "inputUsername": $scope.inputUsername,
            "inputPassword": $scope.inputPassword

        }
    }).success(function(data){
                if(data.statusCode==401) {
                    $scope.msg = "Invalid Username or Password";
                }else {
                    console.log(data.statusCode);

                    // Interesting part, redirect the user
                    $window.location = '/successLogin'
                }
    });

如您所见,在收到表明登录成功的响应后,您可以在客户端重定向用户。 (您必须注入$window作为服务/控制器的依赖项。)

更好的解决方案是使用客户端路由器包,例如ui-router(你应该这样做)。