这是我的控制器
//...
if (req.method == 'POST') {
try {
//..
console.log(req.body.customerName);
}
我试图查看 req.body 是否返回数据,但它返回未定义
这是我的路线
var express = require('express');
var router = express.Router()
//...
router.get('/add-bill',check_login.yeu_cau_dang_nhap, billController.addBill);
router.post('/add-bill',check_login.yeu_cau_dang_nhap, billController.addBill);
//use body-parser in app.js
var app = express();
//...
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
//...
我尝试安装“body-parser”库 但它不起作用
要解析多部分形式,您必须安装
multer
,对于其他身体类型body-parser
如果您的表单仅发送文本字段,则更改表单标签中的
enctype="application/x-www-form-urlencoded"
,无需 multer
,因为 body-parser
与非 multipart
enctype 完美配合。
但是如果您的表单有文件输入,那么您必须使用
multer
。
2个解决方案:
multer.none()
:const app = express();
const multer = require('multer');
//...
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
app.use(multer.none());
const express = require('express');
const bodyParser = require('body-parser');
const multer = require('multer');
const fs = require('fs');
const homeController = require('../controllers/homecontroller');
const billController = require('../controllers/lichdatcontroller');
const check_login = require('../middlewares/check_login');
const router = express.Router();
router.get(
'/add-bill',
check_login.yeu_cau_dang_nhap,
billController.addBill);
const billsDir = __dirname__ + '/../uploads/bills';
try {
fs.mkdirSync(billsDir, { recursive: true });
}
catch (e) {}
router.post(
'/add-bill',
check_login.yeu_cau_dang_nhap,
bodyParser.urlencoded({ extended: false }), // <-- if enctype not multipart
multer({ dest: billsDir }), // <-- if form is multipart
billController.addBill);
module.exports = router;