我很感激这里有一手牌,可能是一手简单的手牌,但已经晚了,我已经打败了。我想我需要第二双眼睛来关注这个问题。
用户名是我试图传递的变量,我是新人,所以不确定礼仪,我认为在我的帖子中最好少写代码,所以我只是把我的 .post 放在我的 .post 中,然后链接我的 git 中心,以防有人想看其余相关代码。
<header>
<nav class="navbar navbar-expand-md navbar-dark bg-success">
<a class="navbar-brand" href="/urls">TinyApp</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-item nav-link" href="/urls">My URLs</a>
<a class="nav-item nav-link" href="/urls/new">Create New URL</a>
</div>
</div>
<p>
***<% username %>***
</p>
</nav>
</header>
我注释掉了一个 if 语句,似乎不起作用,也没有完全导致代码中断。
//redirect to index page after 'login'
app.post('/index', (req, res) => {
// if (req.cookies["username"]) {
// let templateVars = { urls: urlDatabase, username: req.body.username };
// } else {
// let templateVars = { urls: urlDatabase };
// }
res.cookie('username', req.body.username);
let templateVars = { username: req.body.username };
console.log(templateVars.username);
res.redirect('urls', 200, templateVars);
});
最佳答案
您没有正确使用res.redirect()
。函数签名是这样的:
res.redirect([status,] path)
它只需要两个参数,一个可选的状态代码和一个将浏览器重定向到的 URL 或路径。您没有正确传递任何这些参数。
正常使用 res.redirect()
如下所示:
res.redirect("/home");
如果您省略状态,它将默认为 302。
<小时/>也许你打算这样做:
res.render('urls', templateVars);
它将使用 templateVars
对象作为模板的属性来渲染名为 urls
的模板,并且该模板将作为新的 HTML 文档返回,以在表单 POST 之后显示引起了这个请求?
如果您尝试做的是重定向到另一个网址,然后让它以某种方式使用 templateVars
在重定向后进行渲染,则不能这样做。
关于javascript - 使用 EJS 将 JS 转移到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59298826/