POST не работает при использовании экспресс + бутстрап модальный - PullRequest
0 голосов
/ 01 марта 2019

Я сделал регистрационную форму, используя модал начальной загрузки, и я не могу заставить работать запрос POST.

Это форма в моем файле en.pug

#register.modal.fade(tabindex="-1" role="dialog" aria-labelledby="register form" aria-hidden="true")
        .modal-dialog(role="document")
            .modal-content
                .modal-header
                    h5#exampleModalLabel.modal-title Sign Up
                    button.close(type="button" data-dismiss="modal" aria-label="Close")
                        span(aria-hidden="true") ×
                .modal-body
                    form(action='/register' method='POST' )
                        .form-group
                            label.form-control-label(for="name") Name:
                            input#name.form-control(type="text", placeholder='first and last' name='name')
                        .form-group
                            label.form-control-label(for="email") Email:
                            input#email.form-control(type="email", placeholder='name@email.com', name='email')
                        .form-group
                            label.form-control-label(for="password") Password:
                            input#password.form-control(type="password" name='password')
                        .form-group
                            label.form-control-label(for="password") Confirm Password:
                            input#confirmed-password.form-control(type="password" name='confirmPassword')
                        hr.mb-4
                    // /registration form
                        .modal-footer
                             button.btn.btn-secondary(type="button" data-dismiss="modal") Close
                             button.btn.btn-primary(type="submit") Sign Up

Это мой файл server.js

const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();

// serve static files from /public
app.use(express.static(__dirname + '/public'));
app.use(cookieParser());

// view engine setup
app.set('view engine', 'pug');
app.set('views', __dirname + '/views');

// include routes
const routes = require('./routes/index');
app.use('/', routes);


app.listen(3000);

И это ./routes/index.js

var express = require('express');
const app = express();
var router = express.Router();

router.get('/', (req, res) => {
    const cookie = req.cookies.language;
    if (cookie) {
        res.render('en', { cookie });
    } else {
        res.render('ro');
    }
});

router.get('/en', function (req, res) {
    res.cookie('language');
    return res.render('en');
});

// GET /
router.get('/ro', function(req, res) {
    res.clearCookie('language');
    return res.render('ro');
});

app.post("/register", function (req, res) {
    console.log('Hellooooooooooooooooo!')
});

module.exports = router;

Когда я заполняю форму и нажимаю кнопку «Зарегистрироваться», я ожидаю показать «Hellooooooooooooooooooo!»в консоли, но ничего не происходит, и я не могу понять, почему.Я что-то здесь упускаю?

РЕДАКТИРОВАТЬ: я понял, что я сделал ошибку в отступ мопса и кнопка отправки была за пределами формы, причина, по которой заполнение формы и нажатие кнопки регистрации не былосделать что-нибудь

Ответы [ 2 ]

0 голосов
/ 01 марта 2019
//install body-parser npm and require it
const bodyParser = require('body-parser')

//write code below of app.use(cookieParser()) in server.js

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

router.post('/', function(req, res){
 console.log(req.body) //here you will get POST data
})
0 голосов
/ 01 марта 2019

Вы должны использовать bodyparser middleware.

Нам пришлось установить body-parser перед обновлением Express версии 4, но Express теперь поддерживает body-parser по умолчанию.

Просто добавьте

app.use(express.json());
app.use(express.urlencoded({ extended: false }));

Надеюсь, это поможет.

...