node.js下ajax登录请求点击按钮没有发出post请求,但后台却接收到数据

ajax登录请求第一次点击按钮没有发出post请求,但后台却能接收到数据,且登录验证流程全都没能生效,
第二次提交的时候才能正常post,登录验证流程流程也生效

登录页面的ajax代码

<script>
       $("#login_botton").click(function(){
           //注册按钮的事件,用ajax提交表单
           $.post("/dologin",{
               "username" : $("#username").val(),
               "password" : $("#password").val()
      },function(result){
               if(result == "1"){
                   //登录成功
                   alert("登陆成功!将自动跳转到首页");
                   window.location = "/";
               }else if(result == "-1"){
                   $("#regist-msg").html("用户名不存在");
                   $("#regist-msg").addClass("alert-danger")
               }else if(result == "-2"){
                   $("#regist-msg").html("密码错误!");
                   $("#regist-msg").addClass("alert-danger")
               }
           });
       });
</script>

这是登录验证的代码

var formidable = require("formidable");var es6 = require("es6");var path = require("path");var fs = require("fs");var db = require("./db.js");var md5 = require("./md5");

exports.doLogin = function (req, res, next) {    //得到用户表单
   var form = new formidable.IncomingForm();
   form.parse(req, function (err, fields, files) {        //得到表单之后做的事情
       var username = fields.username;        var password = fields.password;        console.log(username+password);        var jiamihou = md5(password);        //查询数据库,看看有没有个这个人
       db.find("users", {"username": username}, function (err, result) {            if (err) {
               res.send("-5");                return;
           }            //没有这个人
           if (result.length == 0) {
               res.send("-1"); //用户名不存在
               return;
           }            //有的话,进一步看看这个人的密码是否匹配
           if (jiamihou == result[0].password) {
               req.session.login = "1";
               req.session.username = username;
               res.send("1");  //登陆成功
               return;
           } else {
               res.send("-2");  //密码错误
               return;
           }
       });
   });
};

这是入口文件

var express = require('express');var app = express();var ejs = require('ejs');var route = require('./route/route');var myDo = require('./model/do');var session = require('express-session');//使用sessionapp.use(session({
   secret: 'keyboard cat',
   resave: false,
   saveUninitialized: true}));


app.set('view engine','ejs');//静态文件app.use('/static',express.static('public'));
app.use("/avatar",express.static("./avatar"));

app.get('/login',route.showLogin);
app.post('/dologin',myDo.doLogin);

当我第一次点击登录的时候,从控制台看到没有post请求,但后台却打印出了账号和密码,
同一个页面不刷新,我第二次点登录的时候,控制台就有post请求了,而且账号验证的代码也能正常运行


村中长相较好的男子
浏览 1378回答 1
1回答

村中长相较好的男子

找到问题了,是因为我的登录页还有一个form 标签,点击登录按钮会先走那个form标签的action路径,所以才提交不到
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Node.js