在写登录页面时遇到问题。直接上代码
下面这段是前台代码。
<script>
window.onload = function() {
$("#login").click(function(){
var username = $("#username").val();
var password = $("#password").val();
var data = {"username":username,"password":password};
$.ajax({
url:'login',
type:'post',
data: data,
success: function(data,status){
if(status == 'success'){
location.href = 'manage_menu';
}
},
error: function(data,status){
if(status == 'error'){
alert("用户名或密码错误!请重新输入。")
location.href = 'login';
}
}
});
})
}
</script>
下面是node响应的代码,像这样将用户名固定在这,没有问题,验证成功就会返回status(200),成功跳转。
router.post('/login',function(req,res){
var user={
username:'admin',
password:'admin'
}
if(req.body.username==user.username&&req.body.password==user.password){
req.session.user = user;
res.sendStatus(200);
}else{
req.session.error = "用户名或密码不正确";
res.sendStatus( 404 );
}
});
但是我像下面这样写就会不会跳转,而且if那里走的是success那
router.post('/login',function(req,res){
dao.User(req.body.username).then(function (result) {
var user={
username:result[0].username,
password:result[0].password
}
if(req.body.username==user.username&&req.body.password==user.password){
res.sendStatus(200);
req.session.user = user;
}
else{
res.sendStatus(404);
req.session.error = "用户名或密码不正确";
}
});
});
这个是数据库查询
function User(username) {
var result=db.msql.query('select * from User where username="'+username+'"');
return result;
}
exports.User = User;
请大家帮我看下是什么原因,谢谢大家。
补充:不跳转的原因发现是先返回了一个status=""的状态,还是异步的原因 ,不知道如何改,求大神帮忙,跪谢。。。
你可以这么试试:
比较完用户名和密码以后,用
return res.json({});
返回,前端不要判断ajax的status,自己设定一个status来用