是否可以在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
非常感谢您的帮助。
答案 0 :(得分:1)
基本上,您需要在请求中使用某个字段来传达此信息。
window.open('/login_page?from=login2', '_parent');
xhr.setRequestHeader
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');
}
}