nodejs一次渲染多个页面

时间:2017-03-28 21:18:00

标签: javascript node.js mongodb express ejs

我有一个contact页面,可以将contact detailsmessage放在一起。一旦他们提供了信息,就会保存到mongodb collection。如果没有错误,我想清空联系表格并显示一条弹出消息,说谢谢。现在,如果我使用

    app.post("/contact", function(req, res){
    var name = req.body.name;
    var email = req.body.email;
    var phone = req.body.phone;
    var message = req.body.mess;
    var contact_message = new Contact({name:name,email:email,phn_no:phone,message:message});
    contact_message.save(function (err) {
    if (err) {
        return err;
    }
    else {
        console.log("Contact details saved");
        res.render("contact");
    }
  });

上面的代码只返回相同的contact page而没有感谢消息。如果我尝试创建一个新的ejs页面(例如:thankyoupage )并通过使用以下方式发送消息来呈现该页面:

res.render("thankyoupage",{message: "thankyou"});

它只会呈现新的谢谢页面并使联系页面不受影响。所以在这种情况下我不会有联系页面。我想要的东西是两者的混合物,我会在后台的联系页面上显示一个弹出的消息,显示感谢信息。无论如何,我能做到吗?任何建议/帮助/示例都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

在您的联系人页面中,您可以插入在首次加载页面时运行的脚本。该脚本检查是否在页面中设置了某个Javascript变量。如果设置了该变量,则脚本会弹出一条感谢信息。如果未设置Javascript变量,则该脚本不执行任何操作。

然后,在服务器上,当您呈现页面时,您向模板传递一个属性,告诉它要为Javascript变量插入什么。这样,您的渲染操作可以控制页面是否会弹出消息。

您可以根据需要将其设置为功能丰富。例如,您可以传递渲染,您希望页面显示的确切消息,模板可以将该消息放入页面中的脚本将显示的Javascript变量中。

同样,弹出窗口可以像你想要的那样丰富。它可能是占据整个页面的整个div,而页面的联系人部分暂时隐藏,或者您可以在常规联系页面上使用alert()prompt()消息框。