快递代码如下:-不管我怎么做,res。body都是({})我找不到错误我甚至检查了文档,但无济于事
const app = express();
const Blog = require('./models/blog');
//to enable post requests
app.use(express.json());
app.use(express.urlencoded({extended : true}));
// for views
// views enable dynamiiic content loading more suitable for real life website
app.set('view engine', 'ejs');
app.listen(3000);
app.get('/', (req, res) => {
// res.sendFile('./html-pages/index.html', {root : __dirname});
//using views and sending objects
//pasing values to ejs files
res.redirect('/blogs');
});
//post method
app.post('/blogs', (req, res) => {
console.log(req.body);
// const blog = new Blog(req.body);
});
app.get('/blogs/create', (req, res) => {
res.render('create', {title : 'Create a Blog'})
})
表单代码:- ejs文件这包含用于提交博客的表单=
<div class="create-blog content">
<form action="/blogs" method="POST">
<label for="title">Blog title</label>
<input type="text" id="title" name:"title" required>
<label for="snippet">Blog Snippet</label>
<input type="text" id="snippet" name:"snippet" required>
<label for="body">Blog Body</label>
<textarea id="body" required name:"body"></textarea>
<button>Submit</button>
</form>
</div>
很难理解这个问题,但是我在你的前端表单中看到了错误。应该看起来像这样:
<form action="/blogs" method="POST">
<label for="title">Blog title</label>
<input type="text" id="title" name="title" required />
<label for="snippet">Blog Snippet</label>
<input type="text" id="snippet" name="snippet" required />
<label for="body">Blog Body</label>
<input type="text" name="body" required />
<input type="submit" value="Submit">
</form>
请注意,只有那些具有name
属性的字段才会在POST正文中发送。
并在后端使用bodyparser
看起来你的javascript文件没有问题。但是在把手内的<input>
标签,你必须使用=
而不是:
,可能工作良好。如<input name="title" id="title"/>