【问题标题】:Node and PUG how to handle submit button in the codeNode和PUG如何处理代码中的提交按钮
【发布时间】:2025-12-13 19:55:01
【问题描述】:

我在下面发布我的代码。我的问题是如何让 PUG 提交按钮工作。最终我想返回页面但禁用一些选择。

文件 app.js

var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');


var tedious = require('tedious');



var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();
app.locals.moment = require('moment');

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});


module.exports = app;

index.js

var express = require('express');
var Promise = require('promise');

var router = express.Router();
var dataset = [];   

router.get('/', getClients, function( req, res, next) {
})
router.post('/', function( req, res, next) {
    console.dir(req.body);
});


router.get('/helloworld', function(req, res) {
    res.render('helloworld', {title: 'Hello World'});

});



function getClients( req, res, next) {
    var promise = new Promise(function(fulfill, reject){








    var Connection = require('tedious').Connection;
    var Request = require('tedious').Request;
    var config = {
         server: '****',
         userName: '****',
         password: '****',
         options: {
              instanceName: '***'
         }
    };




    var connection = new Connection(config);



    connection.on('connect', function (err) {
            if (err) {
              console.log(err);
         } else {
              executeStatement();
         }
    });
    function clientRecord(id, Name)
    {
        this.id = id;
        this.Name = Name;

    }
    function executeStatement() {

       /*  var sql = "select people.people_id, evolv_cs.dbo.formatname(people.last_name, people.first_name, people.middle_name) as client " +
              " from  evolv_cs.dbo.people  join evolv_cs.dbo.event_log " +
              "on event_log.people_id = people.people_id " +
              " and event_log.event_definition_id = 'BA7EF74D-142D-4884-981A-6153755DFBE9' " + // program enrollment
              " and event_log.program_providing_service = '1D955DBF-529C-42D3-A2DA-C77B2036F642' " +   // Central Star PHF - Adolescent
              "  where   event_log.end_date is null "; */

        var sql = "select people_id, name as client from evolv_reports.dbo.people";
        console.log(sql);
         var Request = require('tedious').Request;
         request = new Request(sql, function (err, rowCount) {
              if (err) {
                   reject(err);
              } else {
               if(rowCount < 1) {
                   callback(null, false);
               }
               else {
                fulfill(dataset);
               }
              }
         });


         request.on('row', function (columns) {
             var id = ""


              columns.forEach(function (column) {

                  //console.log(column.metadata.colName);
                  if(column.metadata.colName=== "people_id"){

                      //console.log(column.value);
                      //dataset.push(column.value);
                      id = column.value;
                      //console.log(element);
                   //   col: column.metadata.colName,
                  //     val: column.value
                   }
                  if(column.metadata.colName==="client") {
                      var client = new clientRecord(id, column.value);
                      dataset.push(client);

                      console.log(client.id, client.Name);
                      client = null;
                  }
              });






         });


         request.on('doneProc', function (rowCount, more, returnStatus, rows) {
              next(null, rows);
              //res.json(dataset);
              //res.render();
              connection.close()
              //console.log(dataset);
              res.render('index', { title: 'Central Star PHF Clients. ' , dataset} );
              //console.log('zzz');
              dataset = [];

         });
         connection.execSql(request);
    }
    });

}



module.exports = router;

index.jade

extends layout
//JSON.parse(dataset)


rooms = [ 'Room1', 'Room2', 'Room3', 'Room4']

block content
  h1= title

  h1 #{moment(Date.now()).format('dddd, MMMM Do YYYY: h:mm')}


  form(method='post', action='/')
    .input-group
      - each item in dataset

        //input#client(type='checkbox', name='#{item.id}', checked=False)
        //span #{item.Name}
        input.form-control(type='checkbox', placeholder='#{item.Name}', name='#{item.id}')
        span #{item.Name}


        p


  .form-group
    label Areas
    .radio
      label
        input#optionsRadios1(type="radio", name="optionsRadios", value="D")
        | DayRoom
    .radio
      label
        input#optionsRadios2(type="radio", name="optionsRadios", value="R")
        | BedRoom
    .radio
      label
        input#optionsRadios3(type="radio", name="optionsRadios", value="Y")
        | Yard
    .radio
      label
        input#optionsRadios3(type="radio", value="DA")
        | Dining Area     
   .form-group






    input.btn.btn-success(type='submit', value='Save')

我希望看到的内容是: router.post('/', function(req, res, next) { console.dir(req.body);

我的问题归结为为什么我什么都没看到。从我发现的例子中,我看到了输出。很明显,我对整个技术堆栈非常陌生,包括 HTML、CSS ...

这是页面当前的样子

【问题讨论】:

  • 当你找到答案时..请把它贴在这里,因为我处于同样的困境中......所有这些东西是如何工作的

标签: javascript node.js pug


【解决方案1】:

我在下面发布我的代码。对于问题的答案,请注意发布路线。

//submit
var express = require('express');  
var bodyParser = require('body-parser');  
var app = express();  
app.use(bodyParser.json());
var tedious = require('tedious');
var Promise = require('promise');
app.use(bodyParser.urlencoded({ extended: false }));
var path = require('path');  



var router = express.Router();
var dataset = [];   


app.set('views', path.join(__dirname, 'views'));  
app.set('view engine', 'jade');

app.use(router);  
app.use(express.static(path.join(__dirname, 'public')));








router.get('/', getMenuList, function (req, res, next) {
    res.render('menu_items', {
      title: 'The Weekly Menu',
      message: 'The List',
      dataset
  });
});

router.get('/index', function(req, res) {
    res.render('index')
});

router.post('/update',submitMenuItem, function (req, res) {  
      var menu_date = req.body.menuDate;
      var description = req.body.theItem;
      //console.log(menu_date);
      //console.log(description);

    res.render('update', {
        title: 'All Quiet on the Western Front',
        menuDate: menu_date,
        MenuItem: description 


    });

});


 // end of submitMenuItem


function getMenuList( req, res, next) {
    var promise = new Promise(function(fulfill, reject){








    var Connection = require('tedious').Connection;
    var Request = require('tedious').Request;
    var config = {
        userName: '******',
        password: '********',
        server: '*********',

    // If you're on Windows Azure, you will need this:
        options: {encrypt: true}
    };




    var connection = new Connection(config);



    connection.on('connect', function (err) {
            if (err) {
              console.log(err);
         } else {
              executeStatement();
         }
    });
    function MenuItem(Menu_Date, Name, Display)
    {
        this.Menu_Date = Menu_Date;
        this.Name = Name;
        this.Display = Display;

    }
    function executeStatement() {

         var sql = "select dt_ofItem ,dish_name  FROM LA_COUNTY.dbo.mn_items"; 

         var Request = require('tedious').Request;
         request = new Request(sql, function (err, rowCount) {
              if (err) {
                   reject(err);
              } else {
               if(rowCount < 1) {
                   callback(null, false);
               }
               else {
                fulfill(dataset);
               }
              }
         });


         request.on('row', function (columns) {
             var Menu_Date = ""


              columns.forEach(function (column) {

                  if(column.metadata.colName=== "dt_ofItem"){

                      Menu_Date = column.value.toDateString();

                   }
                  if(column.metadata.colName==="dish_name") {
                      //console.log(column.value);
                      //console.log('WTF');
                      var item = new MenuItem(Menu_Date, column.value, Menu_Date + ": " + column.value);
                      dataset.push(item);
                      //console.log(item.Menu_Date, item.Name);
                      item = null;
                  }
              });






         });


         request.on('doneProc', function (rowCount, more, returnStatus, rows) {
              next(null, rows);
              connection.close()


              dataset = [];

         });

         connection.execSql(request);
    }
    });
}  // end getclients



function submitMenuItem( req, res, next) {


var menu_date = req.body.menuDate;
var description = req.body.theItem;

var Connection = require('tedious').Connection;

  var config = {
    userName: '********',
    password: '*********',
    server: '*********',


    options: {encrypt: true}
  };

  var connection = new Connection(config);

  connection.on('connect', function(err) {

      executeStatement();
    });





  function executeStatement() {
    var sql = "insert LA_County.dbo.mn_items (dt_ofItem, dish_name) values ('" + menu_date + "','" + description + "')"
    var Request = require('tedious').Request;
    request = new Request(sql, function(err, rowCount) {
      if (err) {
        reject(err);
      } else {
        if(rowCount < 1) {
            callback (null, false);
      }
      else {
          fulfill(dataset);
      }
    }
    });


    request.on('row', function(columns) {
      columns.forEach(function(column) {
        //console.log(column.value);
      });
    });

    request.on('doneProc', function (rowCount, more, returnStatus, rows) {
        next(null, rows);

            connection.close()



         });  



    connection.execSql(request);
  }    

} // end of submitMenuItem








app.listen(3030);  
module.exports = app;  

【讨论】:

    最近更新 更多