【问题标题】:Ending post request in Node.js在 Node.js 中结束发布请求
【发布时间】:2015-01-09 16:21:43
【问题描述】:

简单的问题,但我似乎找不到我需要的答案。我需要结束 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("信息");再次用“信息”重写整个页面。我该如何防止这种情况?我还需要发回信息,无论登录是否成功。如果我不返回任何内容,则页面只是卡在加载中。。有人遇到过这样的问题或可以看到任何解决方案吗?

【问题讨论】:

    标签: javascript html node.js post express


    【解决方案1】:

    您也可以将res.send() 与您建议的消息一起使用,以表明它已结束。或者我所做的是,假设这个表单在一个jade文件中(我们称之为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 的力量。希望这是有道理的!

    【讨论】:

    • 两者都使页面变为空白,我不知道是否相关,但页面是使用javascript生成的。
    • 我实际上是在使用纯 javascript 来生成索引文件(如 createElement("div")..),无论如何要从那里访问 isLoggedIn 变量?我也会看看玉,因为它看起来真的很好。感谢您一直以来的帮助! :)
    • 我强烈推荐使用 Jade 和 express。这是一个完美的契合!如果您需要任何指导链接,我将很乐意提供帮助。另外,如果这个答案对您有帮助,请将其标记为正确:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2015-03-17
    相关资源
    最近更新 更多