app.post()不工作,请帮助尝试一切



快递代码如下:-不管我怎么做,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"/>

最新更新