2011-10-01 78 views
1

我有一個index.php。 它有一個登錄功能。 比方說,我有兩個用戶A和B.提醒另一個頁面

第1頁(的index.php用戶A的) -with功能(檢查是否有數據庫的變化,如果是:警報(「消息」))

第2頁(index.php文件的用戶B) -with按鈕,點擊要更新數據庫

我已經可以更新數據庫時,從第1頁已經工作的功能,它可以檢測到的變化,但只有當你重裝它。所以我想在頁面2更新數據庫時重新加載Page1。我想在Page1中使用setTimeout(something,timeInterval),但它看起來並不合適,因爲Page1的組件每次重新加載時都會閃爍。我想第1頁重新加載當且僅當我的數據庫中有更改。我也想過把Page1的功能放在一個無限的while循環中,但它看起來並不合適,因爲頁面剛加載。

另一件事是,我被告知有關JSON和REST。所以我可以從腳本文件訪問數據庫。但我並不那麼認識。我也沒有在jQuery中。

我試過尋找刷新從另一個頁面,但我發現的答案要麼是模糊的,要麼是困難的。而且我的網頁具有相同的名稱,它們僅與登錄的用戶有所不同。但是,如果我可以找到一種方法來執行此操作,那麼我只需使用我的網頁名稱進行操作。

有沒有其他辦法可以做到這一點?謝謝。

+0

我的建議:http://www.zeitoun.net/articles/comet_and_php/start –

+0

當過你更新數據庫做標記爲高,如果標記爲高,則顯示寫第1頁cron作業,這將檢查一條警告消息。您的cron作業可以在特定時間間隔後重復運行 – Astha

回答

0

當你想更新首次加載,通過做

something = new Date().getTime();

把時間在一個變量發送一個XMLHttpRequest到檢查,如果數據庫最後更新時間是比時間較新的一個PHP頁面與ajax呼叫一起發送。如果是,則返回一些告訴JavaScript刷新頁面的內容。如果沒有,請讓JavaScript在幾秒鐘內撥打另一個電話setTimeout

如果在使用jQuery之前學會了JavaScript的繩索會更好,所以我會在一秒鐘內用一些腳本更新這個答案。

編輯1:退房https://developer.mozilla.org/en/AJAX/Getting_Started

使用jQuery的Ajax調用是jQuery的最明智的用途之一,但它是更好,如果你知道它是如何工作了。

+0

是否可以從腳本調用php函數? – user974227

+0

不是沒有ajax調用。 PHP是服務器端,這意味着它只能在服務器上運行。 – mowwwalker

+0

哦,好的。謝謝。 – user974227

0

所以你基本上需要服務器在更新可用時通知page1。你看到的是所謂的「彗星」。看看這個文章:

comet wikipedia

comet ajaxian

彗星編程可以使用AJAX或iFrame

+0

是的。這正是我需要的。我的頁面應該像一個服務器..它檢查數據庫更新 – user974227

0

創建pageC.php應檢查是否數據庫已經改變,如果是的話,輸出1做別的,沒有輸出。

然後用jQuery和AJAX ...

<!DOCTYPE HTML> 
<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Quick AJAX test</title> 
    <!-- needs to be url to jquery, can be locally, or via CDN --> 
    <script type="text/javascript" src="jquery"></script> 
    <script type="text/javascript"> 
    // this executes all contained after page has fully loaded 
    $(function(){ 
     // define function to check for changed database 
     function checkNew(){ 
     // make AJAX GET request, and set callback function 
     $.get('./pageC.php',function(data){ 
      // check if the data returned (page content) is 1 
      if(data === '1') 
      alert('The database has changed') 
      // run the function to check again 
      checkNew() 
     }) 
     } 
     // call the checking function to initialise the loop 
     checkNew() 
    }) 
    </script> 
</head> 
<body> 

</body> 
</html> 
+0

這是非常有幫助的。 Page1已經具有監視數據庫的功能。 – user974227

+0

值得注意的是,一旦它收到迴應,這將會立即重新檢查變化,所以會有很多網絡流量,並且還有一個非常活潑的頁面更新。如果你希望檢查次數少一點,比如說每秒一次,你應該使用'setTimeout(checkNew,1000)'並將當前調用移除到'checkNew()'。 –

+0

我試過這個。但是,我仍然需要重新加載Page1以查看警報消息 – user974227