相同的URL - 呈现不同的页面(EXPRESS)

时间:2013-07-31 18:38:08

标签: javascript node.js express

是否可以在express中为同一个URL呈现不同的页面?

例如,如果我点击#login1,我想发送到/ login_page /。如果我点击#login2,我仍然应该被发送到/ login_page /。每次,我想根据我点击的#login呈现不同的htmls。

所以我希望它看起来像这样。

客户端:

    $("#login1").click(function(){
    window.open(/login_page/,'_parent');    
    });

    $("#login2").click(function(){
    window.open(/login_page/,'_parent');    
    });

服务器:

    app.get('/login_page/', users.login_page1); //if I clicked #login1
    app.get('/login_page/', users.login_page2); //if I clicked #login2

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

基本上,您需要在请求中使用某个字段来传达此信息。

  • 简单的事情:网址设计时的网址
  • 如果您太酷了,网址不同,您可以使用查询字符串
    • window.open('/login_page?from=login2', '_parent');
  • 如果你对查询字符串太酷了,你可以设置一个cookie
  • 如果您对Cookie太酷,可以通过ajax xhr.setRequestHeader
  • 来请求该页面
  • 如果您对自定义ajax请求标头工具很酷,则可以在加载src之前向DOM添加具有跟踪像素login_page属性的图像,并在服务器中检测到会话并相应地呈现不同的页面

总而言之,至少有六种技术方法可以实现这一目标。只有URL和查询字符串是合理的,恕我直言。

答案 1 :(得分:0)

如果我得到了正确的你只想在没有参数的同一请求上调用不同的控制器? 你知道你可以通过服务器端的小控制逻辑来参数化网址并得到你需要的结果。

答案 2 :(得分:0)

我不相信没有任何参数可以做到这一点。一种解决方案可能看起来像这样

客户端:

$("#login1").click(function(){
window.open(/login_page/1,'_parent');    
});

$("#login2").click(function(){
window.open(/login_page/2,'_parent');    
});

服务器:

app.get('/login_page/:id', function(req, res){         //if I clicked #login1
if(req.params.id == 1){
    res.render('index1.html');
}  else {
    res.render('index2.html');
}
}