由app.post触发的快速res.render

时间:2015-04-27 06:43:47

标签: node.js express

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

3 个答案:

答案 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)

好像你对redirectrender感到困惑,根据我的知识,你需要有一个路由器方法来渲染所需的页面,每当你想要登陆该页面时你就可以使用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
});