【发布时间】:2014-04-04 09:55:36
【问题描述】:
我有一个从 angular js 到 Express.js api 的 $http pst ajax 调用。在 Express.js 部分中,我使用节点的异步模块来串行执行代码。当没有问题时,我想重定向到特定页面。因为如果我使用 res.render('url') 我正在从 angular 进行 ajax 调用,所以这不会重定向页面,而是在 angularjs 上提醒我。顺便说一句,我在角度上也有一个 $routeProvider :)。即重定向后加载部分模板
angular AJAX POST CALL 代码
app.controller('MainCtrl',function($scope,$http){
$scope.loginForm=function(){
alert($scope.username);
$http.post('/login',{'name': $scope.username}).
success(function(data) {
alert(data);
}).
error(function(data) {
alert(data);
});
}
});
Node.js(Express.js) api 验证和重定向
app.post('/login',function(req,res){
var name= req.body.name;
//var password= req.body.password;
async.series([
function (callback){
var query= client.query('select count(*) as lgResult from Login where Email='+'"'+req.body.name+'"',function(err,result,field){
if(err) return callback(err);
if(result[0]['lgResult'] === 0){
res.send('passwordWrong');
}
if(result[0]['lgResult'] === 1){
callback(null, 'one');
}
});
},
function (callback){
var query= client.query('select count(*) as lgResult from Login where Email='+'"'+req.body.name+'"',function(err,result,field){
if(err) return callback(err);
if(result[0]['lgResult'] === 0){
res.send('passwordWrongSecondtime');
}
if(result[0]['lgResult'] === 1){
callback(null, 'two');
}
});
}],
function (err,results){
if(err) {
console.log(err);
res.send('Something Broke sorry');
}
else{
res.render('employelogin/employlogin');
}
});
});
角度路由:)
app.config(function($routeProvider, $controllerProvider,$compileProvider){
app.registerCtrl = $controllerProvider.register;
app.compileProvider = $compileProvider.directive;
$routeProvider
.when('/employeeTimeSheet',{
controller:'MainCtrl',
templateUrl:'employeeTimeSheet.html'
})
.when('/employeeLogin',{
templateUrl:'employeeDashboard.html'
})
.otherwise({redirectTo:'/employeeLogin'});
});
我的错误是什么
【问题讨论】:
-
您有任何错误吗?它们是什么?
-
我没有收到错误,而不是重定向,我在我的角度 js 端成功收到警报。
-
@EliranMalka Atlast 找到了一种可行的方法,不确定它是否是最好的方法 res.contentType('application/html'); var data = 'emplogin/empr/:'+结果; res.header('Content-Length', data.length); res.end(数据);在 Angularjs 端,我们可以使用 $windows.location=data;
标签: javascript node.js angularjs express angularjs-routing