req.body 返回的是默认值,而不是我的 POST 请求



我确定我犯了一个小错误,我无法在其他问题中找到答案。基本上每次我尝试发出 POST 请求时,控制台都会显示"{}"而不是 post 请求中的值。我正在使用EJS和Node.js来处理这个POST请求。

这是 ejs 文件中的代码

<label> My Favourite Saying</label>
<form action ="/users/dashboard" method ="POST">
<div class = "form-group">
<input 
type="name" 
id="favSaying" 
class="form-control"
placeholder = "Enter phrase here"
/>
</div>
<small id="FavSayingInst" class="form-text text-muted">
Enter a phrase to have it stored for the next time you login.
</small>
<button type="submit" class="btn btn-dark mt-2">Submit</button>
</div>
</form>

这是处理程序文件中的代码

//Handle the fav saying
router.post('/dashboard', (req,res) => {
console.log(req.body);
console.log("test123");
//User.findOneAndUpdate({email:'tester2@gmail.com', favSaying})
req.flash('store_msg', 'Your phrase has been stored!');
res.redirect('/views/dashboard');
});

我已经添加了正文解析器,所以我知道它不是那样, :

const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const app = express();
const mongoose = require('mongoose');
const flash = require('connect-flash');
const session = require('express-session');
const passport = require('passport');
require('./config/passport')(passport);
//EJS
app.use(expressLayouts);
app.set('view engine','ejs');
//DB Config
const db = require('./config/keys').MongoURI;
//Connect to Mongo
mongoose.connect(db, { useNewUrlParser: true })
.then(() => console.log('MongoDB connected...'))
.catch(err => console.log(err));
//Bodyparser
app.use(express.urlencoded({extended: false}));
//Session
app.use(session({
secret: 's',
resave: true,
saveUninitialized: true
}));
//Passport
app.use(passport.initialize());
app.use(passport.session());
//Connect flash
app.use(flash());
//Vars
app.use((req,res,next) => {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
res.locals.store_msg = req.flash('store_msg');
next();
});
//Routes
app.use('/', require('./routes/index2')); //The first comment is where the webpage routes to, the second is the js file
app.use('/users', require('./routes/users'));
const PORT = process.env.PORT || 5000; 
app.listen(PORT, console.log(`Server started on Port  ${PORT}`));

有谁知道为什么我会得到"{}"而不是我的价值观?我有

输入元素应具有 name 属性,用于将数据传输到请求中。

输入标签中应该有"name"属性。

您需要检查您的response

// POST method route
router.post('/', function (req, res) {
res.send(req.body);
});

试试吧。

你必须解决这个问题。

<input type="text" name="name" ...>

这就是为什么<input>标签类型没有name
名称是post body字段键。

最新更新