我试图在角度控制器的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 -
答案 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(你应该这样做)。