Javascript 节点连接闪存不处理表单提交

Javascript 节点连接闪存不处理表单提交,javascript,jquery,node.js,Javascript,Jquery,Node.js,我在节点中连接闪存时遇到问题。我想在提交表单而不刷新页面时显示一条成功消息。我的应用程序如下所示: 我有一个Jquery数据表,在一个页面中显示员工列表 在同一页的数据表下方,我有一个表格可以添加新员工。 3.添加新员工后,我想使用connect flash显示一条成功消息 拜托,你能告诉我哪里做错了吗?添加新员工后未显示成功消息 我的代码如下: employeeList.js控制器代码: var express = require('express'); var session = requi

我在节点中连接闪存时遇到问题。我想在提交表单而不刷新页面时显示一条成功消息。我的应用程序如下所示:

  • 我有一个Jquery数据表,在一个页面中显示员工列表
  • 在同一页的数据表下方,我有一个表格可以添加新员工。 3.添加新员工后,我想使用connect flash显示一条成功消息
  • 拜托,你能告诉我哪里做错了吗?添加新员工后未显示成功消息

    我的代码如下:

    employeeList.js控制器代码:

    var express = require('express');
    var session = require('express-session');
    var router = express.Router();
    var bodyParser = require('body-parser');
    const database = require('../services/database.js');
    var flash = require('connect-flash');
    router.use(session());
    router.use(flash());
    
    // Creates a new employee profile
    async function post(req, res, next) {
        let error = null, result = null;
        try {
            let binds = {};
            console.log("Content-Type ="+req.get('Content-Type'));
            if (req.get('Content-Type').indexOf("application/json") < 0) {
                console.log("In the Post if");
                res.set('Content-Type', 'application/json').status(415).send(JSON.stringify({
                    status: 415,
                    message: "Wrong content-type. Only application/json is supported",
                    detailed_message: null
                }));
                return;
            } else {
                binds.FIRST_NAME = req.body.FIRST_NAME;
                binds.LAST_NAME = req.body.LAST_NAME;
                binds.EMAIL = req.body.EMAIL;
                binds.PHONE_NUMBER = req.body.PHONE_NUMBER;
                binds.HIRE_DATE = req.body.HIRE_DATE;
                binds.JOB_ID = req.body.JOB_ID;
                binds.SALARY = parseFloat(req.body.SALARY);
                binds.COMMISSION = parseFloat(req.body.COMMISSION);
                binds.MANAGER_ID = parseInt(req.body.MANAGER_ID);
                const maxEmpId = await database.simpleExecute("SELECT MAX(EMPLOYEE_ID)+1 as maxEmpId FROM employees", {}, {});
                console.log("MaxEmpId "+JSON.stringify(maxEmpId.rows[0]["MAXEMPID"]));
                binds.EMPLOYEE_ID = JSON.stringify(maxEmpId.rows[0]["MAXEMPID"]);
                console.log("Binds ="+JSON.stringify(binds));
            }
            result = await database.simpleExecute("INSERT INTO employees VALUES " +
            "(:EMPLOYEE_ID, :FIRST_NAME, :LAST_NAME, :EMAIL, :PHONE_NUMBER, " +
            ":HIRE_DATE, :JOB_ID, :SALARY, :COMMISSION, :MANAGER_ID, 60) ", binds, {});
        } catch (err) {
            error = err;
            console.log("Error ===="+err);
            next(err);
        } finally {
            if (error != null || result.rowsAffected === 0) {
                // Error
                console.log("Error ="+error);
                res.set('Content-Type', 'application/json');
                res.status(400).send(JSON.stringify({
                    status: 400,
                    message: (error != null && error.message.indexOf("ORA-00001") > -1) ? "Employee already exists" : "Input Error",
                    detailed_message: (error != null ? error.message : "")
                }));
    
            } else {
                // Successfully created the resource
                console.log("Error ="+error+", Result ="+result);
                req.flash('success', 'Employee Added Successfuly');
                res.status(201).send(JSON.stringify({status: 201, message: "", detailed_message: ""}));
            }
        }
    };
    
    module.exports.post = post;
    
    
    **// Read all the employee_profiles (GET)**
    async function get(req, res, next) {
        try {
            console.log("In the GET of Route");
            const result = await database.simpleExecute("SELECT * FROM EMPLOYEES", [], {});
            const rows = JSON.stringify(result.rows);
            // console.log("Rows ="+rows);
            res.json(rows);
        } catch (err) {
          console.log("Error ===="+err);
          next(err);
        }
    };
    
    module.exports.get = get;
    
    var express = require('express');
    var session = require('express-session');
    var router = express.Router();
    var bodyParser = require('body-parser');
    const employeesList = require('../controllers/employeesList');
    const employee = require('../controllers/showEmployee');
    var flash = require('connect-flash');
    router.use(session());
    router.use(flash());
    
    router.route('/employees').get(function(req, res, next) {
        try {
            res.render("index", { messages: req.flash('success') });
            console.log('FLASH MESSAGES-->',req.flash());
        } catch (err) {
          console.log("Error ===="+err);
          next(err);
        }
    });
    
    var createError = require('http-errors');
    var express = require('express');
    var session = require('express-session');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var flash = require('connect-flash');
    
    // Database
    var indexRouter = require('./routes/index');
    var employeesRouter = require('./routes/employeesRouter');
    var app = express();
    app.use(flash());
    
    // view engine setup
    app.set('view engine', 'pug');
    app.set('views', path.join(__dirname, 'views'));
    app.use(express.static(path.join(__dirname, '/')));
    app.use(express.static(path.join(__dirname, 'public')));
    
    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    
    //Setup Session MiddleWare with secret and session options
    var sessionMiddleware = session({
        secret: 'keyboard cat',
        resave: true,
        saveUninitialized: true
      });
    
    app.use(sessionMiddleware);
    app.use(function (req, res, next) {
        //req.session.test = "test";
        req.flash('info', req.flash());
        next();
    });
    
    app.use('/', employeesRouter);
    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      next(createError(404));
    });
    
    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};
    
      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });
    
    module.exports = app;
    
    app.js代码:

    var express = require('express');
    var session = require('express-session');
    var router = express.Router();
    var bodyParser = require('body-parser');
    const database = require('../services/database.js');
    var flash = require('connect-flash');
    router.use(session());
    router.use(flash());
    
    // Creates a new employee profile
    async function post(req, res, next) {
        let error = null, result = null;
        try {
            let binds = {};
            console.log("Content-Type ="+req.get('Content-Type'));
            if (req.get('Content-Type').indexOf("application/json") < 0) {
                console.log("In the Post if");
                res.set('Content-Type', 'application/json').status(415).send(JSON.stringify({
                    status: 415,
                    message: "Wrong content-type. Only application/json is supported",
                    detailed_message: null
                }));
                return;
            } else {
                binds.FIRST_NAME = req.body.FIRST_NAME;
                binds.LAST_NAME = req.body.LAST_NAME;
                binds.EMAIL = req.body.EMAIL;
                binds.PHONE_NUMBER = req.body.PHONE_NUMBER;
                binds.HIRE_DATE = req.body.HIRE_DATE;
                binds.JOB_ID = req.body.JOB_ID;
                binds.SALARY = parseFloat(req.body.SALARY);
                binds.COMMISSION = parseFloat(req.body.COMMISSION);
                binds.MANAGER_ID = parseInt(req.body.MANAGER_ID);
                const maxEmpId = await database.simpleExecute("SELECT MAX(EMPLOYEE_ID)+1 as maxEmpId FROM employees", {}, {});
                console.log("MaxEmpId "+JSON.stringify(maxEmpId.rows[0]["MAXEMPID"]));
                binds.EMPLOYEE_ID = JSON.stringify(maxEmpId.rows[0]["MAXEMPID"]);
                console.log("Binds ="+JSON.stringify(binds));
            }
            result = await database.simpleExecute("INSERT INTO employees VALUES " +
            "(:EMPLOYEE_ID, :FIRST_NAME, :LAST_NAME, :EMAIL, :PHONE_NUMBER, " +
            ":HIRE_DATE, :JOB_ID, :SALARY, :COMMISSION, :MANAGER_ID, 60) ", binds, {});
        } catch (err) {
            error = err;
            console.log("Error ===="+err);
            next(err);
        } finally {
            if (error != null || result.rowsAffected === 0) {
                // Error
                console.log("Error ="+error);
                res.set('Content-Type', 'application/json');
                res.status(400).send(JSON.stringify({
                    status: 400,
                    message: (error != null && error.message.indexOf("ORA-00001") > -1) ? "Employee already exists" : "Input Error",
                    detailed_message: (error != null ? error.message : "")
                }));
    
            } else {
                // Successfully created the resource
                console.log("Error ="+error+", Result ="+result);
                req.flash('success', 'Employee Added Successfuly');
                res.status(201).send(JSON.stringify({status: 201, message: "", detailed_message: ""}));
            }
        }
    };
    
    module.exports.post = post;
    
    
    **// Read all the employee_profiles (GET)**
    async function get(req, res, next) {
        try {
            console.log("In the GET of Route");
            const result = await database.simpleExecute("SELECT * FROM EMPLOYEES", [], {});
            const rows = JSON.stringify(result.rows);
            // console.log("Rows ="+rows);
            res.json(rows);
        } catch (err) {
          console.log("Error ===="+err);
          next(err);
        }
    };
    
    module.exports.get = get;
    
    var express = require('express');
    var session = require('express-session');
    var router = express.Router();
    var bodyParser = require('body-parser');
    const employeesList = require('../controllers/employeesList');
    const employee = require('../controllers/showEmployee');
    var flash = require('connect-flash');
    router.use(session());
    router.use(flash());
    
    router.route('/employees').get(function(req, res, next) {
        try {
            res.render("index", { messages: req.flash('success') });
            console.log('FLASH MESSAGES-->',req.flash());
        } catch (err) {
          console.log("Error ===="+err);
          next(err);
        }
    });
    
    var createError = require('http-errors');
    var express = require('express');
    var session = require('express-session');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var flash = require('connect-flash');
    
    // Database
    var indexRouter = require('./routes/index');
    var employeesRouter = require('./routes/employeesRouter');
    var app = express();
    app.use(flash());
    
    // view engine setup
    app.set('view engine', 'pug');
    app.set('views', path.join(__dirname, 'views'));
    app.use(express.static(path.join(__dirname, '/')));
    app.use(express.static(path.join(__dirname, 'public')));
    
    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    
    //Setup Session MiddleWare with secret and session options
    var sessionMiddleware = session({
        secret: 'keyboard cat',
        resave: true,
        saveUninitialized: true
      });
    
    app.use(sessionMiddleware);
    app.use(function (req, res, next) {
        //req.session.test = "test";
        req.flash('info', req.flash());
        next();
    });
    
    app.use('/', employeesRouter);
    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      next(createError(404));
    });
    
    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};
    
      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });
    
    module.exports = app;
    
    索引pug文件:

    var express = require('express');
    var session = require('express-session');
    var router = express.Router();
    var bodyParser = require('body-parser');
    const database = require('../services/database.js');
    var flash = require('connect-flash');
    router.use(session());
    router.use(flash());
    
    // Creates a new employee profile
    async function post(req, res, next) {
        let error = null, result = null;
        try {
            let binds = {};
            console.log("Content-Type ="+req.get('Content-Type'));
            if (req.get('Content-Type').indexOf("application/json") < 0) {
                console.log("In the Post if");
                res.set('Content-Type', 'application/json').status(415).send(JSON.stringify({
                    status: 415,
                    message: "Wrong content-type. Only application/json is supported",
                    detailed_message: null
                }));
                return;
            } else {
                binds.FIRST_NAME = req.body.FIRST_NAME;
                binds.LAST_NAME = req.body.LAST_NAME;
                binds.EMAIL = req.body.EMAIL;
                binds.PHONE_NUMBER = req.body.PHONE_NUMBER;
                binds.HIRE_DATE = req.body.HIRE_DATE;
                binds.JOB_ID = req.body.JOB_ID;
                binds.SALARY = parseFloat(req.body.SALARY);
                binds.COMMISSION = parseFloat(req.body.COMMISSION);
                binds.MANAGER_ID = parseInt(req.body.MANAGER_ID);
                const maxEmpId = await database.simpleExecute("SELECT MAX(EMPLOYEE_ID)+1 as maxEmpId FROM employees", {}, {});
                console.log("MaxEmpId "+JSON.stringify(maxEmpId.rows[0]["MAXEMPID"]));
                binds.EMPLOYEE_ID = JSON.stringify(maxEmpId.rows[0]["MAXEMPID"]);
                console.log("Binds ="+JSON.stringify(binds));
            }
            result = await database.simpleExecute("INSERT INTO employees VALUES " +
            "(:EMPLOYEE_ID, :FIRST_NAME, :LAST_NAME, :EMAIL, :PHONE_NUMBER, " +
            ":HIRE_DATE, :JOB_ID, :SALARY, :COMMISSION, :MANAGER_ID, 60) ", binds, {});
        } catch (err) {
            error = err;
            console.log("Error ===="+err);
            next(err);
        } finally {
            if (error != null || result.rowsAffected === 0) {
                // Error
                console.log("Error ="+error);
                res.set('Content-Type', 'application/json');
                res.status(400).send(JSON.stringify({
                    status: 400,
                    message: (error != null && error.message.indexOf("ORA-00001") > -1) ? "Employee already exists" : "Input Error",
                    detailed_message: (error != null ? error.message : "")
                }));
    
            } else {
                // Successfully created the resource
                console.log("Error ="+error+", Result ="+result);
                req.flash('success', 'Employee Added Successfuly');
                res.status(201).send(JSON.stringify({status: 201, message: "", detailed_message: ""}));
            }
        }
    };
    
    module.exports.post = post;
    
    
    **// Read all the employee_profiles (GET)**
    async function get(req, res, next) {
        try {
            console.log("In the GET of Route");
            const result = await database.simpleExecute("SELECT * FROM EMPLOYEES", [], {});
            const rows = JSON.stringify(result.rows);
            // console.log("Rows ="+rows);
            res.json(rows);
        } catch (err) {
          console.log("Error ===="+err);
          next(err);
        }
    };
    
    module.exports.get = get;
    
    var express = require('express');
    var session = require('express-session');
    var router = express.Router();
    var bodyParser = require('body-parser');
    const employeesList = require('../controllers/employeesList');
    const employee = require('../controllers/showEmployee');
    var flash = require('connect-flash');
    router.use(session());
    router.use(flash());
    
    router.route('/employees').get(function(req, res, next) {
        try {
            res.render("index", { messages: req.flash('success') });
            console.log('FLASH MESSAGES-->',req.flash());
        } catch (err) {
          console.log("Error ===="+err);
          next(err);
        }
    });
    
    var createError = require('http-errors');
    var express = require('express');
    var session = require('express-session');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var flash = require('connect-flash');
    
    // Database
    var indexRouter = require('./routes/index');
    var employeesRouter = require('./routes/employeesRouter');
    var app = express();
    app.use(flash());
    
    // view engine setup
    app.set('view engine', 'pug');
    app.set('views', path.join(__dirname, 'views'));
    app.use(express.static(path.join(__dirname, '/')));
    app.use(express.static(path.join(__dirname, 'public')));
    
    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    
    //Setup Session MiddleWare with secret and session options
    var sessionMiddleware = session({
        secret: 'keyboard cat',
        resave: true,
        saveUninitialized: true
      });
    
    app.use(sessionMiddleware);
    app.use(function (req, res, next) {
        //req.session.test = "test";
        req.flash('info', req.flash());
        next();
    });
    
    app.use('/', employeesRouter);
    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      next(createError(404));
    });
    
    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};
    
      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });
    
    module.exports = app;
    
    我保持状态以显示这样的消息

    //Message
            #testing
                if (messages.length>0)
                div.alert.alert-danger #{ messages }
    

    根据Chris G的建议,我向JSON添加了一条响应消息,该消息已发送回,并在我的pug模板中使用Jquery进行呈现。

    根据Chris G的建议,我已经向JSON添加了一条响应消息,该消息被发送回来,并在我的pug模板中使用Jquery进行呈现。

    在不刷新页面的情况下提交表单,我想这意味着您正在使用AJAX/fetch?在这种情况下,flash消息将是服务器响应的一部分,因此不会显示在页面上,除非您手动将其显示在AJAX成功回调中。(这种flash专门针对不使用ajax但使用经典导航和表单提交的网站)@ChrisG,我使用的是get-using-async函数,这里我没有使用任何ajax。我已经用上面的get函数更新了我的代码。请检查您的第二句话是
    我想在提交表单而不刷新页面时显示一条成功消息
    ,并且您的控制器的
    post()
    需要并发回JSON。你怎么不使用AJAX。。。?同样,在AJAX-JSON响应上调用
    flash()
    也不会起任何作用,除非库支持此用例,并且具有显示flash消息的客户端JS代码(没有问题:)您需要做的只是将结果(“Employee added successfully”)添加到您发送回的JSON响应中。然后把信息放在一个不可见的固定div上,淡入淡出,然后用定时器淡出。在我的React应用程序中,我使用了一个。不,因为这些flash消息只插入到pug模板中,没有
    res.render()
    模板根本不使用。您正在以JSON字符串的形式发回一个小对象;flash模块是为经典导航而构建的,浏览器在点击某个内容后会重新加载整个页面。在不刷新页面的情况下提交表单,我想这意味着你在使用AJAX/fetch?在这种情况下,flash消息将是服务器响应的一部分,因此不会显示在页面上,除非您手动将其显示在AJAX成功回调中。(这种flash专门针对不使用ajax但使用经典导航和表单提交的网站)@ChrisG,我使用的是get-using-async函数,这里我没有使用任何ajax。我已经用上面的get函数更新了我的代码。请检查您的第二句话是
    我想在提交表单而不刷新页面时显示一条成功消息
    ,并且您的控制器的
    post()
    需要并发回JSON。你怎么不使用AJAX。。。?同样,在AJAX-JSON响应上调用
    flash()
    也不会起任何作用,除非库支持此用例,并且具有显示flash消息的客户端JS代码(没有问题:)您需要做的只是将结果(“Employee added successfully”)添加到您发送回的JSON响应中。然后把信息放在一个不可见的固定div上,淡入淡出,然后用定时器淡出。在我的React应用程序中,我使用了一个。不,因为这些flash消息只插入到pug模板中,没有
    res.render()
    模板根本不使用。您正在以JSON字符串的形式发回一个小对象;flash模块是为经典导航而构建的,浏览器在点击某个内容后重新加载整个页面。