Javascript NODE.JS中的URL重定向处理程序&;快车

Javascript NODE.JS中的URL重定向处理程序&;快车,javascript,node.js,http,express,ejs,Javascript,Node.js,Http,Express,Ejs,我正在尝试使用重定向到指定URL的html表单使重定向函数工作 这是“数据库”(现在只是一个对象): 这就是“数据库”被传递到服务器的方式: app.get("/urls", (req, res) => { //template vars is passed to urls_index EJS file let templateVars = { urls: urlDatabase }; res.render("urls_index", templateVars); }); “UR

我正在尝试使用重定向到指定URL的html表单使重定向函数工作

这是“数据库”(现在只是一个对象):

这就是“数据库”被传递到服务器的方式:

app.get("/urls", (req, res) => {
//template vars is passed to urls_index EJS file
let templateVars = { urls: urlDatabase };   
res.render("urls_index", templateVars); 
});
“URL\u索引”是视图文件

以及查看ejs文件(名为“URL\U索引”)上的我的表单:

单击表单时,它应该重定向到相应的url页面(例如重定向到google.com)


非常感谢您的帮助。

ejs使用糟糕的javascript进行循环,而不是像python中那样使用
进行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

<% }); %>

//用url做些什么

您的表单有
method=“POST”
但您的路由处理程序使用
。get
而不是
。POST
。我将方法更改为match,但它仍然不起作用。“不起作用”没有帮助。请执行一些基本调试,并将
控制台.log(“params:,req.params);
添加到处理程序中。(顺便说一句,我建议使用pug而不是ejs;在我看来,它的可读性要高得多)我的终端中没有注册console.log,更具体地说,我收到的错误是浏览器上的“无法获取/u/”。表单操作应该是
“/u/”
app.get("/u/:id", (req, res) => {
let redirection = urlDatabase[req.params.id];
res.redirect(redirection);
});
<% 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>
 <% }; %>
<% urls.forEach(function(url) { %>

//do something with url

<% }); %>