У меня есть две функции маршрутизации, которые должны отображать одну и ту же страницу, но с разными данными, основанными на URL-адресе. Но как только я отобразил страницу, я не могу повторно отобразить страницу, она выдает ошибку
Error: Can't set headers after they are sent.
У меня есть два таких маршрута:
app.post('/abc',function(req,res){
...
res.render('template',{....})
...
});
app.get('/abc/xyz/:params',function(req,res){
...
res.render('template',{...})
...
});
У меня есть кнопка отправки на странице /abc
, которая указывает на /abc/xyz/params
, но выдает ошибку заголовка.
Затем я попытался отправить некоторые данные с помощью res.json
, которые позже я мог бы обработать с помощью AJAX, но после нажатия кнопки отправки обработанная страница теряется и, следовательно, она возвращает только файл JSON.
Я на самом делея пытаюсь обновить часть страницы, не перезагружая ее целиком, но я не могу сохранить шаблон после нажатия кнопки отправки.
Я даже пытался API истории HTML5 изменить URL без обновления, но этодаже дает мне ту же ошибку.
Это весь мой код
app.post('/login',function(req,res){
dbo.collection("user").find({$and:[{"email":req.body.email},{'password':req.body.password}]}).count().then(function(result){
if(result==1){
dbo.collection("user").findOne({$and:[{"email":req.body.email},{'password':req.body.password}]}, function(err, r) {
req.session.email=req.body.email;
if (err) throw err;
res.render('login', {name:r.name,email: req.body.email,password: req.body.password,status: "Match Found!"});
});
}
else{
console.log('Match not found');
res.render('error_msg', { email: req.body.email,password: req.body.password,status: "Match Not found!"});
}
});
});
app.get('/login/email/:email',function(req,res){
dbo.collection("user").findOne({"email":req.params.email},function(er,r){
if(er)
throw er;
if(r){
res.render('login',{email_search:r.name});
}
else{
res.render('login',{email_search:'No User Found!'});
}
});
});