我是javascript的新手,正在开发一个应用程序,我的页面上有多个标签。单击第二个选项卡时,我正在进行ajax调用以获取我想要在会话中更新的一些数据。
在页面加载期间,我的会话中有用户名:
app.get('/home',function(req,res){
res.render('home',{
layout:false,
session: req.session
});
});
使用上面的代码,我可以加载我的主页,并能够从请求对象访问会话,该对象目前只有用户名。 Onclick第二个标签我想添加另一个属性“朋友”。
在我的控制器中,我正在写
req.session.friends = "saurabh";
但同样没有反映在我的页面上,因为页面没有重新加载。
请建议。
答案 0 :(得分:0)
如果我正确理解您的问题,您希望在应用程序的页面中打开两个浏览器窗口或标签页,并在窗口B中进行更改时更新窗口A.
假设这是正确的,对会话的简单更改不会这样做。您需要一些机制来通知窗口A当在窗口B中进行更改时,服务器上的某些内容已发生更改。它将如下所示:
Server Window A Window B
| | |
| | user clicks
|<----------- | --------------|
| message sent to server |
| | |
state change | |
on server | |
| | |
|------------>| |
| message sent to window A |
| | |
| change in |
| window A |
| | |
听起来你有第一部分 - 从Window B发送到服务器的消息。你提到了一个AJAX调用来提交请求。这样做会很好。
现在你需要第二部分,即窗口B的消息。有几种不同的方法可以做到这一点:
窗口B可以轮询服务器以进行更改,每隔几秒就会发出一次AJAX请求,询问状态是否已更改。
使用Websockets在客户端和客户端之间建立持久连接。服务器。然后,服务器可以使用该连接在需要时将消息“推送”到客户端。
答案 1 :(得分:0)
我认为我有一个解决方法,因为没有直接的解决方案。
我正在进行一次Ajax调用,它会命中一个控制器并由DB来获取一些结果。
从控制器我使用res.end(数据)//数据是我需要发送到UI的响应
在Ajax成功的过程中,我正在生成HTML并在需要的地方传递值。
请建议更好的替补。