在express application generator创建的存根中,我创建了一个名为test
的新视图。
我无法使用以下方式调用test
app.post('/test', function(req, res, next) {
res.render('test');
});
这似乎令人惊讶,因为下面的app.get
正在按预期呈现:
app.get('/test', function(req, res, next) {
res.render('test');
});
我已经进一步尝试了以下内容,但它仍然没有呈现页面:
app.post('/test', function(req, res, next) {
console.log('within app.post'); // this is getting logged
res.redirect('/test');
});
请帮忙。如何从帖子方法中呈现test
?
答案 0 :(得分:3)
因此javascript代码可能存在问题。我在下面添加代码到routes文件夹中的index.js文件,并且模板正在渲染:
router.get('/test', function(req, res, next) {
res.render('index', {title: 'GET test'});
});
router.post('/test', function(req, res, next) {
res.render('index', {title: 'POST test'});
});
尝试通过curl发送请求:
curl -v -XPOST http://localhost:3000/test
或使用chrome或firefox扩展程序发出请求。
答案 1 :(得分:0)
好像你对redirect
和render
感到困惑,根据我的知识,你需要有一个路由器方法来渲染所需的页面,每当你想要登陆该页面时你就可以使用redirect
致电。例如,
// This will render the index.html page
app.get('/login', function(req,res) {
res.render('index.html');
});
// This will redirect to above page
app.post('/homepage', function(req,res) {
res.redirect('/login');
});
答案 2 :(得分:0)
我不知道这是否是最好的方法,但你真的希望你的渲染在每个路线的一个地方。无论是否发布了某些内容,我都使用.all()来处理页面呈现。
app.post('/test', function(req, res, next) {
// Do something with posted data
next();
})
app.all('/test', function(req, res) {
// res.render the page
});