Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 由app.post触发的Express res.render_Node.js_Express - Fatal编程技术网

Node.js 由app.post触发的Express res.render

Node.js 由app.post触发的Express res.render,node.js,express,Node.js,Express,在由创建的存根中,我创建了一个名为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
的新视图

我无法使用以下命令调用
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');
});

请帮忙。如何从post方法渲染
test

似乎您对
重定向
渲染
感到困惑,据我所知,您需要一个路由器方法来渲染所需页面,并且无论何时您想要登录该页面,都可以使用
重定向
调用。例如

// 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');
});

所以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扩展来发出请求。

我不知道这是否是最好的方法,但您确实希望每个路由都在一个位置进行渲染。我使用.all()来处理页面呈现,无论是否发布了内容

app.post('/test', function(req, res, next) {
  // Do something with posted data
  next();
})
app.all('/test', function(req, res) {
  // res.render the page
});

你是如何提出发帖请求的?@vanadium23。。。我正在使用jquery`$.ajax({url://test”,键入:“POST”})`尝试将一些json发送回res.send({some:'json'});找到模板问题。@vanadium23。。。我尝试将json发送回,但在客户端“uncaughtSyntaxerror:Unexpected token o”处出现此错误。。。但请注意,模板工作正常(因为app.get渲染模板),这是更严重的问题。在顶部有一个res.render的例子。我的意思是使用不同的路由路径。根据您的示例,您使用了相同的路径来呈现和重定向。user get verb呈现页面并向其发送重定向。@PriyanshuShekhar刚刚尝试过。这不是渲染。感谢您使用
重定向获得以下错误:
未处理PromisejectionWarning:未处理的承诺拒绝(拒绝id:2):错误:发送后无法设置标题。
我想问题在于如何使用$.ajax调用POST。。。删除
contentType:“application/json”
为我解决了这个问题。谢谢。@KayaToast我也遇到了同样的问题,你能描述一下你是如何解决的吗?