Node.js 节点JS EJB获取URL参数
我试图在EJS模板中读取URL参数,但是我尝试或从google读取的所有内容都不起作用。以下是我的app.js文件的相关部分:Node.js 节点JS EJB获取URL参数,node.js,ejs,Node.js,Ejs,我试图在EJS模板中读取URL参数,但是我尝试或从google读取的所有内容都不起作用。以下是我的app.js文件的相关部分: app.post('/account/logintoaccount', function(req, res) { var email = req.body.email; if(email === '') { res.redirect('https://myurl.com/account/login?e=bademail');
app.post('/account/logintoaccount', function(req, res) {
var email = req.body.email;
if(email === '') {
res.redirect('https://myurl.com/account/login?e=bademail');
return;
}
var password = req.body.password;
if(password === '') {
res.redirect('https://myurl.com/account/login?e=badpassword');
return;
}
res.redirect('https://myurl.com/?email=' + email + '&pw=' + password);
});
下面是我试图在EJS文件中显示变量的地方:
<div id="title-text">
<% if(!req.query.e) { %>
<p>Log into your account:</p>
<% } else if(req.query.e === "badpass") { %>
<div class="alert alert-danger"><strong>Error</strong> incorrect password</div>
<% } else if(req.query.e === "bademail") { %>
<div class="alert alert-danger"><strong>Error</strong> unknown email address</div>
<% } %>
</div>
登录您的帐户:
错误密码不正确
错误未知电子邮件地址
如果我删除EJS文件的这一部分,重定向就可以正常工作。URL中有参数,一切都很好。然而,每当我尝试在EJS文件中以任何形式使用URL参数时,它就会中断并给我一个“X是未定义的错误”。我试过使用“e”、“req.query.e”、“this.e”、“this.req.query.e”和谷歌搜索结果建议我做的任何其他东西
我的最终目标是能够在中读取URL参数
然后检查“e”代表什么。我花了30多分钟阅读谷歌的搜索结果,但我认为这些结果要么已经过时,要么就是我做错了。有人能帮忙吗?感谢您抽出时间请将请求传递到您的视图中
app.get('/account/:action', function(req, res) {
res.render('account/' + req.params.action, {
session: req.session,
req: req
});
});
您需要显示GET
/login
处理程序。您可能没有将请求对象传递给视图。@Mikeyapp.get('/account/:action',function(req,res){res.render('account/'+req.params.action,{session:req.session});})代码>这个?如果是这样,我会添加什么来解决这个问题?感谢您的建议,最好将错误存储在会话中。另外,在URL中输入密码从来都不是一个好主意。@Alexanderflores:你重定向或渲染了吗。在使用重定向时,我们如何在ejs模板中提取查询值