简单的问题,但我似乎无法找到我需要的答案。我需要结束POST请求,而不是根据res.end(...)中的要求发回页面html;或res.send(...)。
这是我的表格:
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
这是我在节点中的请求处理程序(我正在使用exppress):
app.post( '/' , function( req, res ) {
if(req.body.hasOwnProperty('username') && req.body.hasOwnProperty('password')){
console.log("Login requested",req.body.username);
var minute = 120 * 1000;
var userid = UUID();
res.cookie('user', userid, { maxAge: minute,signed: true});
// I need to end it here
}
});
如果我只做res.end();它显示客户端上的空白页面,我不希望它做任何事情。 res.send(&#34;信息&#34);再次使用&#34; info&#34;重写整个页面。我该如何防止这种情况?此外,我需要发回信息,登录是否成功。如果我没有返回任何内容,页面就会停止加载..任何人都遇到过这样的问题或者能看到任何解决方案吗?
答案 0 :(得分:0)
您还可以使用res.send()
一条消息,如您所示,表明它已结束。或者我做的是,假设这个表单是在玉文件中(让我们称之为index.jade
),我将消息设置为参数。
所以做一些像
这样的事情res.render("index",
{
isLoggedIn: false
}
);
在玉器布局上,您可以检查这些变量并在刷新时显示相关消息。因此,您的表单将类似于以下index.jade
文件:
if isLoggedIn
p Yay!
else
p Login failed
form(method="post")
input(type="text" name="username")
input(type="password" name="password")
input(type="submit" value="Login")
这充分利用了Express和Jade的力量。希望它有意义!