javascript - NODE.JS 和 EXPRESS 中的 URL 重定向处理程序

标签 javascript node.js http express ejs

我正在尝试使用重定向到指定 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”是 View 文件....

和我在 View 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

<% }); %>

关于javascript - NODE.JS 和 EXPRESS 中的 URL 重定向处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991496/

相关文章:

如果 URL 是 https,则 Python urllib2 给出 "network unreachable error"

javascript - JQuery 遍历字符串的出现次数

javascript - 如何解决在node js中找不到模块的问题

javascript - 每次完整回发时,javascript 全局命名空间都会被清除吗?

node.js - 为什么根据生产/开发状态使用不同的调试模块?

node.js - mongodb/mongoose 聚合或返回 null

django - Tastypie "always_return_data"选项更改响应状态代码

security - 将 jwt 作为 GET 请求的查询参数放入 url 是否安全?

javascript - 如何在 Javascript 中引用此 CSS?

javascript - 如何重写基本操作/ reducer 以使用 promise