问题是:想点击登录根据返回的status信息实现跳转,但是返回的是个空的status。
直接上代码
前台请求的代码
这个是路由里面的响应代码
router.post('/login',function(req,res){
return dao.User(req.body.username)
.then(function (error,result) {
var user={
username:result[0].username,
password:result[0].password
}
console.log(user);
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);
}
});
数据库查询的代码
function User(username,callback) {
return db.msql.query('select * from User where username="'+username+'"')
.then(function (data) {
console.log(data);
return callback(null,data);
});
}
运行日志信息如下
express:router use / query +0ms
express:router use / expressInit +0ms
express:router use / logger +0ms
express:router use / jsonParser +41ms
express:router use / urlencodedParser +5ms
express:router use / cookieParser +1ms
express:router use / session +1ms
express:router use / serveStatic +3ms
express:router use / +6ms
express:router use / router +1ms
express:router use /users router +3ms
express:router use / +3ms
express:router use / +1ms
express:router use / +2ms
express:router dispatching POST /users/login +2s
express:router query : /users/login +5ms
express:router expressInit : /users/login +11ms
express:router logger : /users/login +3ms
express:router jsonParser : /users/login +8ms
express:router urlencodedParser : /users/login +9ms
express:router cookieParser : /users/login +52ms
express:router session : /users/login +3ms
express:router serveStatic : /users/login +6ms
express:router : /users/login +1ms
express:router router : /users/login +1ms
express:router dispatching POST /users/login +1ms
express:router trim prefix (/users) from url /users/login +3ms
express:router router /users : /users/login +20ms
express:router dispatching POST /login +4ms
express:router dispatching GET /users/login? +9ms
express:router query : /users/login? +1ms
express:router expressInit : /users/login? +2ms
express:router logger : /users/login? +5ms
express:router jsonParser : /users/login? +6ms
express:router urlencodedParser : /users/login? +4ms
express:router cookieParser : /users/login? +2ms
express:router session : /users/login? +10ms
express:router serveStatic : /users/login? +4ms
express:router : /users/login? +18ms
express:router router : /users/login? +2ms
express:router dispatching GET /users/login? +4ms
express:router trim prefix (/users) from url /users/login? +3ms
express:router router /users : /users/login? +3ms
express:router dispatching GET /login? +1ms
GET /users/login? 304 99.863 ms - -
POST /users/login - - ms - -
express:router dispatching GET /stylesheets/manage_style.css +79ms
express:router query : /stylesheets/manage_style.css +7ms
express:router expressInit : /stylesheets/manage_style.css +15ms
express:router logger : /stylesheets/manage_style.css +8ms
express:router jsonParser : /stylesheets/manage_style.css +5ms
express:router urlencodedParser : /stylesheets/manage_style.css +3ms
express:router cookieParser : /stylesheets/manage_style.css +1ms
express:router session : /stylesheets/manage_style.css +1ms
express:router serveStatic : /stylesheets/manage_style.css +6ms
GET /stylesheets/manage_style.css 304 38.838 ms - -
[ RowDataPacket { username: 'admin', password: 'admin' } ]
从日志里看是POST请求先响应了一个空的status,所以导致登录跳转不了,请大神帮忙看下是哪里写的不对,谢谢!
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
找到原因了。。是前台ajax请求的问题,ajax是异步执行的,没等查询数据库操作完成就返回了空值。
将ajax的async设置成false后执行顺序就对了,但是location.href=url不好用了。。。
解决方法是在回调函数后面加上return=false;
但是不知道原理是什么。。。