2017-07-13 57 views
0

我是新来的JavaScript和我工作的一个应用程序,在那里我有我的页面上有多个选项卡。在点击第二个选项卡上,我调用Ajax来获取一些数据,我想在我的会话中更新。的Javascript会话刷新

在页面加载我在会议上的用户名:

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

与上面的代码,我能够加载我的主页,并能够从请求对象访问会话,这在目前只有用户名。第二个选项卡Onclick我想添加另一个属性“朋友”。

在我的控制,我写

req.session.friends = "saurabh"; 

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

请建议。

+0

看看https://www.w3schools.com/howto/howto_js_tabs。asp,我有一个类似于这个的页面,如果你在第一个选项卡上做了修改,第二个选项卡上会有相应的修改。如果可能,请帮我使用代码片段 –

+0

评论中的链接是关于更新内容在使用Javascript和DOM的单个页面上。它与AJAX,会话或任何服务器端代码无关。目前还不清楚你在问什么。 – Kryten

+0

在页面加载时,有一个ajax调用,它从数据库中获取值。该提取是通过服务器端控制器进行的。我想在我的ejs页面上使用结果。 –

回答

0

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

  1. 我正在做一个Ajax调用,它打到一个控制器,然后由DB获取一些结果。

  2. 从我使用res.end控制器(数据)//数据是我需要在Ajax中成功被发送到UI

  3. 响应,我生成HTML和传递值和在需要时。

请建议一个更好的替代品。

0

如果我正确理解你的问题,你想拥有开放的应用程序中的页两个浏览器窗口或标签,并有窗口中的更新,当您在窗口B.

变化假设是正确的,对会话进行简单的更改不会做到这一点。你需要一些机制来通知窗口中的那个东西已经改变了服务器上时,改变窗口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   | 
     |    |    | 

这听起来像你的第一部分向下 - 消息从窗口B发送到服务器。您提到一个AJAX调用来提交请求。这将工作得很好。

现在你需要第二部分,该消息到窗口B.有几个不同的方法来做到这一点:

  1. 窗口B可查询更改服务器,使得AJAX请求每对夫妇的几秒钟询问状态是否改变。

  2. 使用WebSockets建立客户&服务器之间的持久连接。服务器随后可以使用该连接在需要时将消息“推送”给客户端。

+0

添加了一条新评论来阐述我的观点 –