繁体   English   中英

express.js发布方法不起作用

[英]express.js post method not working

我是后端编程的新手。 这是我第一次使用node和express。 我的发布方法似乎无效,我也不知道为什么。 这是我的用户代码:

var express = require('express');
var router = express.Router();
var multer = require('multer');
var upload = multer({dest: './uploads'});
var bodyParser  =  require("body-parser");

var User = require('../models/user');


router.use(bodyParser.urlencoded({ extended: false }));
router.use(bodyParser.json());

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
}); 
router.get('/registration', function(req, res, next) {
  res.render('../views/registration', { title: 'registration' });
  console.log('test1');
  console.log(req.body);
}); 
router.post('/registration', function(req, res, next) {
    console.log('test')
    console.log(req.body);
    console.log(req.body.name);
}); 

router.get('/registration2',(req, res) =>{
  res.render('../views/registration2', { title: 'registration2' });
}); 

router.post('/registration2', function(req, res, next) {
    console.log('test3')
    console.log(req.body);

}); 

module.exports = router;

这是我的翡翠形式:

form#form-registr(method='POST', action='/users/registration')  
              .form-row.col-12
                #form1.col-lg-5
                  .form-group
                    label(for='inputName') Ім'я
                    input#name.form-control.px-3(name='name', type='text', aria-describedby='nameHelp', placeholder="Ім'я латиницею")
                  .form-group
                    label(for='inputSurname') Прізвище
                    input#surname.form-control.px-3(name='surname', type='text', aria-describedby='surnameHelp', placeholder='Прізвище латиницею')
                  .form-group
                    label(for='inputEmail1') Email
                    input#email1.form-control.px-3(name='email', type='email', aria-describedby='emailHelp', placeholder='Введіть email')
                  .form-group
                    label(for='inputEmail2') Підтвердити Email
                    input#email2.form-control.px-3(name='email2',type='email', aria-describedby='emailHelp', placeholder='Повторіть email')
                  .form-group
                    label(for='inputPassword1') Пароль
                    input#password1.form-control.px-3(name='passowrd', type='password', placeholder='Пароль')
                  .form-group
                    label(for='inputPassword2') Підтвердити пароль
                    input#password2.form-control.px-3(name='password2', type='password', placeholder='Повторіть пароль')
                #form2.col-lg-5.offset-lg-1
                  h5.mt-3.mb-5 Оберіть категорії (щонайменше 4)
                  .row
                    .col-lg-6.col-md-6.col-sm-12
                      .form-check
                        input#checkArch.form-check-input(name='archi', type='checkbox', value='Архітектура ПЗ')
                        label.form-check-label(for='check1')
                          | Архітектура ПЗ
                      .form-check
                        input#checkBase.form-check-input(name='dbs',type='checkbox', value='Бази даних: розробка та адміністрування')
                        label.form-check-label(for='check2')
                          | Бази даних: розробка та адміністрування
                      .form-check
                        input#checkWeb.form-check-input(name='webdev', type='checkbox', value='Веб-розробка')
                        label.form-check-label(for='check3')
                          | Веб-розробка
                      .form-check
                        input#checkMobile.form-check-input(name='mobdev',type='checkbox', value='Mobile development')
                        label.form-check-label(for='check4')
                          | Mobile development
                      .form-check
                        input#checkGame.form-check-input(name='gamedev', type='checkbox', value='Game Development')
                        label.form-check-label(for='check5')
                          | Game Development
                      .form-check
                        input#checkDesign.form-check-input(name='design', type='checkbox', value='Дизайн (Web, UI, 3D)')
                        label.form-check-label(for='check6')
                          | Дизайн (Web, UI, 3D)
                      .form-check
                        input#check1C.form-check-input(name='1c', type='checkbox', value='Програмування: 1С')
                        label.form-check-label(for='check7')
                          | Програмування: 1С
                      .form-check
                        input#checkC.form-check-input(name='c++',type='checkbox', value='Програмування: С/С++')
                        label.form-check-label(for='check8')
                          | Програмування: С/С++
                      .form-check
                        input#checkPython.form-check-input(name='pyhton',type='checkbox', value='Програмування: Python')
                        label.form-check-label(for='check9')
                          | Програмування: Python
                    .col-lg-6.col-md-6.col-sm-12
                      .form-check
                        input#checkPHP.form-check-input(name='php', type='checkbox', value='Програмування: PHP')
                        label.form-check-label(for='check10')
                          | Програмування: PHP
                      .form-check
                        input#checkJava.form-check-input(name='java', type='checkbox', value='Програмування: JAVA')
                        label.form-check-label(for='check11')
                          | Програмування: JAVA
                      .form-check
                        input#checkProject.form-check-input(name='management', type='checkbox', value='Project Management')
                        label.form-check-label(for='check12')
                          | Project Management
                      .form-check
                        input#checkSyst.form-check-input(name='sysdamin', type='checkbox', value='Системне адміністрування')
                        label.form-check-label(for='check13')
                          | Системне адміністрування
                      .form-check
                        input#checkBezpeka.form-check-input(name='security', type='checkbox', value='ІТ безпека')
                        label.form-check-label(for='check14')
                          | ІТ безпека
                      .form-check
                        input#checkMereji.form-check-input(name='networks', type='checkbox', value='Мережеві технології')
                        label.form-check-label(for='check15')
                          | Мережеві технології
                      .form-check
                        input#checkServer.form-check-input(name='servertech',type='checkbox', value='Серверні технології')
                        label.form-check-label(for='check16')
                          | Серверні технології
                      .form-check
                        input#checkAuto.form-check-input(name='sysauto', type='checkbox', value='Системи автоматизації')
                        label.form-check-label(for='check17')
                          | Системи автоматизації
                      .form-check
                        input#checkTest.form-check-input(name='testing', type='checkbox', value='Тестування')
                        label.form-check-label(for='check18')
                          | Тестування
                  button#submit-registration.btn.d-block.float-right.mt-5.mb-3.text-white.px-4(type='submit') Далі...

因此,get请求中的console.log有效,但post中的日志无效。 我不知道为什么。

我是新来的,谢谢。

编辑:这是我的app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var passport = require('passport');
var expressValidator = require('express-validator');
var LocalStrategy = require('passport-local').Strategy;
var multer = require('multer');
var upload = multer({dest: './uploads'})
var flash = require('connect-flash');
var smongo = require('mongodb');
var mongoose = require('mongoose');
var db = mongoose.connection;

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

var app = express();

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



app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// handle sessions
app.use(session({
    secret:'secret',
    saveUnitialized: true,
    resave: true
}));

//passport 
app.use(passport.initialize());
app.use(passport.session());

// validator
app.use(expressValidator({
    errorFormatter: function(param, msg, value) {
        var namespace = param.split('.')
        , root = namespace.shift()
        , formParam = root;

        while(namespace.length) {
            formParam += '[' + namespace.shift() + ']';
        }   
        return {
            param : formParam,
            msg : msg,
            value : value
        };
    }
}));

// express messages
app.use(require('connect-flash')());
app.use(function (req, res, next) {
  res.locals.messages = require('express-messages')(req, res);
  next();
});


app.use('/', indexRouter);
app.use('/users', usersRouter);

我找到了解决方案的人。 问题出在注册页面的Javascript文件中。 我有一个函数,当单击按钮时,该函数可以重定向到另一个页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM