2017-03-16 59 views
0

我想知道是否有一種方法強制使用同一臺服務器上的JS命令刷新URL頁面。有沒有辦法讓相同的URL頁面刷新,如果他們在同一臺服務器上?

例如:我在同一臺服務器上的三臺設備上打開了一個URL頁面。當我點擊更新時,URL會自動刷新所有三個設備?

我只能弄清楚如果它現在在同一個設備上,它將會如何刷新它。

CODE IN MY PHP文件:

\t \t \t function refresh() { 
 
\t \t \t \t setTimeout(function() { 
 
\t \t \t \t location.reload(true) 
 
\t \t \t \t }, 100); 
 
\t \t }

CODE IN MY HTML:

button onclick="updateData(); refresh()">Update</button>

+3

這比這更復雜一點。服務器必須將命令推送到所有設備才能重新加載頁面。這通常使用websockets完成。 –

+0

您必須使用websockets或sse(Server-Sent Events)將命令推送到您網站中的所有用戶 – mohade

+1

websockets最適合實時數據,但如果因任何原因無法使用websockets,那麼我想您可以使用ajax來調用服務器 - 檢查是否有更新,但這意味着您必須記錄下爲客戶端加載的最後一件事情,以便與現有/新內容進行比較。這也不是即時更新,這將使用間隔來完成,並且會產生許多無用的調用,所以如果堅持實時數據,websocket將非常有益。另外我會重新加載整個頁面,我只會顯示新的數據。 – NewToJS

回答

0

您應該設置AJAX數據檢索塔斯(循環腳本) 如果發現Ajax腳本存在您的命令重新加載,請執行此任務。

例如:從reload.txt
做GET價值沒有得到的數據是0,你的行動使TXT爲1
如果AJAX腳本發現它是1,不要通過腳本重裝。

1 - 在你的page.php旁邊創建reload.txt,並在txt中只寫0。 在你的PHP文件中寫這個劇本的html部分內 -

<script> 
function load(){ 
$.ajax({ 
     url : "reload.txt", 
     dataType: "text", 
     success : function (data) { 
      if (data == 0) { 
      $(".text").html(data); // to check number and not necessary for your function 
      } 
      else{ 
       window.top.location = "/"; 
       <?php $file = fopen("reload.txt","w"); 
       fwrite($file,"0"); 
       fclose($file); ?> 
      } 
     } 
}); 
} 

load(); // This will run on page load 
setInterval(function(){ 
load() // this will run after every 5 seconds 
}, 5000); 

</script> 

<div class="text">will appear here</div> // to check number and not necessary for your function 

有關完整的功能,你需要將其設置在0頁面重新加載。
最後添加函數,將txt值更改爲1,然後在您的服務器重新加載按鈕中進行測試。 PS:你應該創新你的功能,而不是0/1方法。就像增量或其他東西一樣,並將其存儲在$ _SESSION中以便爲所有客戶端工作。

+0

你能告訴我一個例子嗎?我不熟悉這 –

+0

我編輯了答案,並確保您的txt文件具有完全的讀/寫權限。祝你好運 。 –

+0

有沒有辦法只有在用戶決定時才加載頁面? –

相關問題