Javascript会话刷新

时间:2017-07-13 02:11:01

标签: node.js ajax session express

我是javascript的新手,正在开发一个应用程序,我的页面上有多个标签。单击第二个选项卡时,我正在进行ajax调用以获取我想要在会话中更新的一些数据。

在页面加载期间,我的会话中有用户名:

app.get('/home',function(req,res){  
    res.render('home',{
        layout:false,
        session: req.session
    }); 
}); 

使用上面的代码,我可以加载我的主页,并能够从请求对象访问会话,该对象目前只有用户名。 Onclick第二个标签我想添加另一个属性“朋友”。

在我的控制器中,我正在写

req.session.friends =  "saurabh";

但同样没有反映在我的页面上,因为页面没有重新加载。

请建议。

2 个答案:

答案 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的消息。有几种不同的方法可以做到这一点:

  1. 窗口B可以轮询服务器以进行更改,每隔几秒就会发出一次AJAX请求,询问状态是否已更改。

  2. 使用Websockets在客户端和客户端之间建立持久连接。服务器。然后,服务器可以使用该连接在需要时将消息“推送”到客户端。

答案 1 :(得分:0)

我认为我有一个解决方法,因为没有直接的解决方案。

  1. 我正在进行一次Ajax调用,它会命中一个控制器并由DB来获取一些结果。

  2. 从控制器我使用res.end(数据)//数据是我需要发送到UI的响应

  3. 在Ajax成功的过程中,我正在生成HTML并在需要的地方传递值。

  4. 请建议更好的替补。