Javascript 已使用响应节点js后重定向
我想呈现一些页面,在一定时间后,它需要重定向到另一个页面。然而,我得到了一个“发送后无法设置标题”的提示。从我所读到的信息来看,响应应该只使用一次,尽管我不确定这是否属实。我将非常感谢对这个特殊问题的任何帮助或解决方案Javascript 已使用响应节点js后重定向,javascript,node.js,Javascript,Node.js,我想呈现一些页面,在一定时间后,它需要重定向到另一个页面。然而,我得到了一个“发送后无法设置标题”的提示。从我所读到的信息来看,响应应该只使用一次,尽管我不确定这是否属实。我将非常感谢对这个特殊问题的任何帮助或解决方案 app.get('/', function (req, res) { var message = req.flash(); res.render('index', { message: req.flash('message'), hassError: messag
app.get('/', function (req, res) {
var message = req.flash();
res.render('index', { message: req.flash('message'), hassError: message.length > 0} );
});
app.get('/error', function (req, res) {
var timeout = 3000;
setTimeout(function (err) {
console.log('finished');
if (err)
throw err;
console.log('################');
res.redirect('/');
}, timeout);
res.render('partials/404');
});
“finished”被打印出来,然后抛出错误,但不是回调中指定的错误。您不能使用这种方法-呈现意味着将头发送到浏览器,然后浏览器关闭HTTP请求。您无法发送第二个响应 您必须在页面上的JavaScript中执行超时逻辑,而不是服务器:
<script>
var timeout = 3000;
setTimeout(function () {
window.location = "http://www.yoururl.com";
}, timeout);
</script>
var超时=3000;
setTimeout(函数(){
window.location=”http://www.yoururl.com";
},超时);
您不能使用这种方法-呈现意味着将头发送到浏览器,然后浏览器关闭HTTP请求。您无法发送第二个响应
您必须在页面上的JavaScript中执行超时逻辑,而不是服务器:
<script>
var timeout = 3000;
setTimeout(function () {
window.location = "http://www.yoururl.com";
}, timeout);
</script>
var超时=3000;
setTimeout(函数(){
window.location=”http://www.yoururl.com";
},超时);
您尝试发送的重定向应该在用户点击服务器时在服务器端右侧完成,或者在404页面加载后在浏览器上完成。您尝试发送的重定向应该在用户点击服务器时在服务器端右侧完成,或者在404页面加载后在浏览器上完成。您不能对单个请求发送多个响应。就像有人向你要汉堡,你给了他们一个汉堡,他们就走开了。过了一段时间,你又朝他们的后脑勺扔了一个汉堡。他们不会抓住它的
在这种情况下,您需要在客户端处理重定向。如果这只是一个常规页面呈现,那么可以使用meta
标记的refresh
属性
如果这是一个AJAX请求,您需要让客户端在延迟后执行重定向。您不能对一个请求发送多个响应。就像有人向你要汉堡,你给了他们一个汉堡,他们就走开了。过了一段时间,你又朝他们的后脑勺扔了一个汉堡。他们不会抓住它的 在这种情况下,您需要在客户端处理重定向。如果这只是一个常规页面呈现,那么可以使用
meta
标记的refresh
属性
如果这是一个AJAX请求,您需要让客户端在延迟后执行重定向。您在api上发送了两次res.redirect。您最好的选择可能是在partials 404页面上设置超时,您将在api上发送两次res.redirect。您最好的选择可能是在partials 404页面上设置超时,就像一个符咒。谢谢你,太好了,如果你能接受这个答案,我会很感激的。很有魅力。非常感谢,如果你能接受这个答案,我将不胜感激。