0

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

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

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

客户:

    $("#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

非常感谢您的帮助。

4

3 回答 3

1

基本上,您需要请求中的一些字段来传达此信息。

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

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

于 2013-07-31T19:08:50.807 回答
0

如果我理解正确,您只想在没有参数的情况下根据相同的请求调用不同的控制器?您知道您可以对 url 进行参数化,并在服务器端使用小型控制逻辑获得所需的结果。

于 2013-07-31T18:46:46.470 回答
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');
}
}
于 2013-07-31T19:08:42.813 回答