[英]URL Redirection handlers in NODE.JS & EXPRESS
我正在尝试使用重定向到指定 URL 的 html 表单使重定向功能工作
这是“数据库”(现在只是一个对象):
let urlDatabase = {
b2xVn2: "http://www.cbc.ca", //keyname just a randomly assigned number
"9sm5xK": "http://www.google.com"
};
这就是将所说的“数据库”传递给服务器的方式:
app.get("/urls", (req, res) => {
//template vars is passed to urls_index EJS file
let templateVars = { urls: urlDatabase };
res.render("urls_index", templateVars);
});
“urls_index”是视图文件....
以及我在视图 ejs 文件(名为“urls_index”)上的表单:
<% for (let index in urls) { %>
<ul> <li> <%= urls[index] + ": " + index %> <br>
<form method ="POST" action="/u/<%= urls[index] %>"><button
type="submit" class="btn btn-outline-danger btn-sm">Click here to
redirect to your page</button></form>
</li> </ul>
<% } %>
我在服务器文件上的处理程序:
app.get("/u/:id", (req, res) => {
let redirection = urlDatabase[req.params.id];
res.redirect(redirection);
});
当表单被点击时,它应该重定向到相应的 url 页面(例如重定向到 google.com)。
任何帮助表示赞赏,谢谢。
ejs 使用糟糕的 javascript for 循环,而不是像 python 中的for x in y
循环。
这应该可以解决问题:
<% for (var i=0; i<urls.length; i++) { %>
<ul> <li> <%= url[i] + ": " + i %> <br>
<form method ="GET" action="<%= '/u/' + url[i] %>">
<button class="btn btn-outline-danger btn-sm">Click here to redirect to your page</button>
//buttons have a default type="submit" so no need to add that
</form>
</li> </ul>
<% }; %>
请注意,如果不需要数组索引,您也可以使用这样的 for 循环:
<% urls.forEach(function(url) { %>
//do something with url
<% }); %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.