我不知道怎么回事。
login.js
是路由脚本。 login.js
中包含使用app.js
代码。
下面是我想做的流程。
localhost:3000/login
->称为route.get('/',...)
router.post('/loginCheck,...)
res.render('main')
但是下面是我无法理解的预期流程。
localhost:3000/login
->称为route.get('/',...)
router.post('/loginCheck,...)
res.render('main')
route.get('/',...)
和res.render('login')
是重新执行。即使有任何代码调用route.get('/',...)
router.post('/loginCheck,...)
之后进入route.get('/',...)
服务器端:
//app.js
'use strict';
/******************
* Declare global variables *
*******************/
global.__base = __dirname + "/src";
global.__root = __dirname;
/******************
* Call libraries *
******************/
const bodyParser = require('body-parser');
const Logger = require(__base + '/lib/util/logger');
const express = require('express');
const app = express();
/******************
* Milddleware Configuration*
******************/
app.use(bodyParser.urlencoded({extended : false}));
app.use(bodyParser.json());
app.use(express.static(__root + '/public'));
app.set('view engine','ejs');
app.set('views', __root + '/views');
/******************
* Environment Configuration *
******************/
const PORT = process.env.PORT || 3000;
/******************
* Use router in express *
******************/
const main = require(__root + '/routes/main');
const login = require(__root + '/routes/login');
app.use("/main", main);
app.use("/login", login);
app.listen(PORT, function() {
Logger.info(`connection complete. Open page localhost:${PORT}`);
});
//login.js
/****************************************
* Call libraries *
****************************************/
const express = require('express');
const router = express.Router();
const mysql = require(__base + '/lib/db/async-mysql');
const Logger = require(__base + '/lib/util/logger');
/****************************************
* Declare Classes *
****************************************/
const CHECK_LOGIN_INFO_SQL = require(__root + '/template/sql/checkLoginInfo').CHECK_LOGIN_INFO
/****************************************
* router posts/gets *
****************************************/
const binder = [];
router.post('/loginCheck', async function (req,res){
const id = req.body.id;
const pw = req.body.pw;
let result = false;
binder.push(id);
// res.render('main');
const sqlResult = await mysql.query(CHECK_LOGIN_INFO_SQL,binder);
if(sqlResult[0].PW){
if(sqlResult[0].PW == pw){
// result = true;
res.render('main',function(err, html) {
console.log('error : ' + err);
});
}
}
});
router.get('/', function(req,res){
console.log('login page open')
res.render('login');
});
module.exports = router;
客户端:
/******************
* Login page send post *
******************/
const HOST_LOGIN = "/login";
service.checkLogin = function(params) {
service._sendJsonToServer(HOST_LOGIN+'/loginCheck', 'json', params, function(data){
//task after ajax success
});
};
/******************
* Ajax template *
******************/
service._sendJsonToServer = function(url, dataType, params,callback) {
$.ajax({
url : url,
data : JSON.stringify(params),
dataType : dataType,
type : 'POST',
contentType : 'application/' + dataType,
// error : errorHandler,
success: callback
});
};