express(node js)中的urlencoded无法正常工作

问题描述 投票:0回答:1

我遇到了以下问题:提交表单时,表单中的数据没有传输,提交表单后,无限加载,没有数据传输

“快车”:“^4.18.2”

index.js:

import express from 'express';
import expressHandlebars from 'express-handlebars';
import hbs from 'hbs';
import bodyParser from 'body-parser';

const app = express();
const port = 3333;

const urlEncodedParser = bodyParser.urlencoded({ extended: false });
const jsonParser = bodyParser.json();

app.engine(
  'hbs',
  expressHandlebars.engine({
    layoutsDir: 'views/layouts',
    defaultLayout: 'layout',
    extname: 'hbs',
    helpers: {
      for: function (from, to, incr, block) {
        var accum = '';
        for (let i = from; i <= to; i += incr) accum += block.fn(i);
        return accum;
      },
    },
  })
);
app.set('view engine', 'hbs');
hbs.registerPartials('./views/partials');

app.get('/register', (req, res) => {
  res.render('register.hbs');
});
app.post('/register', urlEncodedParser, (req, res, next) => {
  if (!req.body) {
    res.send('hi' + req.body.userName);
  }
});

//server
app.listen(port, (err) => {
  if (err) {
    console.log('server didabled:' + err);
  } else {
    console.log('server is running on:' + port);
  }
});

HTML 表格

<form method='post'>
  <input type='text' placeholder='input name' name='userName' />
</form>

尝试不使用正文解析器:

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

app.get.....
app.post('/register',(req,res)=>{
if(!req.body)return res.sendStatus(400);
})

不工作

node.js express post urlencode
1个回答
0
投票
  1. 您正在使用
    express": "^4.18.2
    ,因此您不需要
    import bodyParser
    ,因为它是
    express
    的一部分。
  2. 你会得到无尽的负载,因为你只在一种条件下返回响应,顺便说一句,这是行不通的。
  3. 如果你想检查
    req.body
    是否为空,那么你可以这样做:
import express from 'express';
//...
// import bodyParser from 'body-parser'; //< No need for this

const app = express();
const port = 3333;

//const urlEncodedParser = bodyParser.urlencoded({ extended: false }); //< No need for this
//const jsonParser = bodyParser.json(); //< No need for this
app.use(express.urlencoded({extended:false})); //< Add this
app.use(express.json()); //< Add this
//..

app.post('/register', (req, res, next) => {
  if (!Object.keys(req.body).length) { //< Check for an empty req.body object
     res.send('Error: No data sent');
  }else{
     // You may want to check here for req.body.userName but that's up to you 
     res.send(`Hi ${req.body.userName}`);
  }
});

//...
© www.soinside.com 2019 - 2024. All rights reserved.