2017-07-13 58 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

添加了一條新評論來闡述我的觀點 –