#node.js #express
Вопрос:
Я пытаюсь вывести значение title
, которое я ввел в форму по /Add-Product
ссылке
Вот мой app.js код
const http= require('http'); const path= require('path'); const express= require('express'); const app= express(); app.set('view engine', 'ejs'); app.set('views', 'Views'); app.use(express.static(path.join(__dirname, 'Public'))); app.get('/', (req, res, next)=gt;{ res.render('shop'); }); app.get('/admin', (req, res, next)=gt;{ res.render('admin'); }); app.get('/add-product', (req, res, next)=gt;{ res.render('addProduct'); }); app.post('/add-product', (req, res, next)=gt;{ console.log(req.body.title); //uable to display value of req.body.title res.redirect('/'); }); app.listen(3000);
составьте часть addProduct.ejs
lt;maingt; lt;form action="/add-product" method="POST"gt; lt;pgt;Titlelt;/pgt; lt;input type="text" name="title" id="title"/gt; lt;pgt;Pricelt;/pgt; lt;input type="text" name="price"/gt; lt;pgt;Descriptionlt;/pgt; lt;input type="text" name="description"/gt; lt;button type="submit"gt;Submitlt;/buttongt; lt;/formgt; lt;/maingt;
Не удается понять, почему req.body.title выдает ошибку как: Cannot read property 'title' of undefined
Пожалуйста, объясните мне, чего мне не хватает.
Ответ №1:
По умолчанию форма отправляет данные на сервер в виде содержимого application/x-www-form-urlencoded
. Поэтому вам необходимо настроить node js для получения контента такого типа. Используется bodyParser
для чтения тела запроса с json и закодированным содержимым.
Использование:
var bodyParser = require('body-parser'); app.use(bodyParser.json()); // support json encoded bodies app.use(bodyParser.urlencoded({ extended: true }));
Комментарии:
1. Спасибо, это сработало