Javascript NODE.JS中的URL重定向处理程序&;快车
我正在尝试使用重定向到指定URL的html表单使重定向函数工作 这是“数据库”(现在只是一个对象): 这就是“数据库”被传递到服务器的方式: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
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
<% }); %>