2011-11-04 132 views
0

我在JavaScript中有這個簡單的函數來刷新一個頁面一段時間後。在javascript刷新中調用php函數

function AutoRefresh(t) { 
    setTimeout("location.reload(true);", t); 
} 

現在每次刷新後,我想它來調用PHP函數,例如:

function writeName() 
{ 
echo "Refresh me"; 
} 

是否有可能以後每刷新調用PHP函數在JavaScript? 謝謝

+0

閱讀:http://stackoverflow.com/questions/7016701/creating-jquery-ajax-requests-to-a-php-function/7016795#7016795 – NullUserException

+1

JavaScript是從金星,PHP是從火星... –

回答

0

如果您正在刷新頁面,您將有效地從服務器重新加載它,所以任何'onload'事件都會再次觸發。該頁面將從頭開始再次渲染。不過,如果你喜歡,你可以在一些'onload'Javascript監聽器中使用AJAX調用PHP腳本。例如與JQuery:

<html> 
<head> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
    <script type="text/javascript"> 

    $(document).ready(function() { 

     setTimeout("location.reload(true);", 2000); 

     $.get('home.html', function(ret){ 
      $('body').html(ret); 
     }); 

    }); 

    </script> 
    </head> 
    <body> 
     <h1>Test</h1> 

    </body> 
    </html> 

小心儘量遞歸調用setTimeout(),因爲它可以使頁面隨着時間的推移無響應。你會發現這個有用:

http://www.erichynds.com/javascript/a-recursive-settimeout-pattern/

+0

,如果我想避免JQuery。我可以改變方法嗎?我可以從PHP調用JavaScript嗎?謝謝 – user1017072

+0

不是。閱讀上面由NullUserException鏈接的文章。考慮在服務器(PHP)上執行什麼代碼,以及哪些代碼只是託管在服務器上,但實際上是在客戶端(JS)上執行的。他們是非常不同的,加入兩個是HTTP,這是一個無狀態的協議。 –

+0

當然,你不需要使用JQuery。如果你喜歡,你可以編寫自己的JS函數,或者使用不同的框架來節省時間。 –

1

恐怕答案是否定的。在您的頁面上運行JavaScript時,服務器端(PHP)已經完成處理。你最好的選擇是在頁面加載之前完成你需要的東西,或者單獨用JavaScript來完成。

+0

什麼是這樣的情況下最好的方法:我有一個PHP腳本連接到數據庫獲取數據,我希望它每隔幾秒獲取數據,並顯示在屏幕上。我不希望用戶手動刷新屏幕,所以我更願意使用JavaScript自動刷新頁面以顯示更改。 – user1017072

+2

@ user1017072,看看http://www.erichynds.com/javascript/a-recursive-settimeout-pattern/ –

+0

如上所述,你最好的選擇是定期使用AJAX調用。 jQuery很容易快速啓動和運行。如果您只想更新內容,請查看$ .load()函數以將內容直接加載到頁面的一部分中。對於更復雜的事情,製作一個輸出JSON並使用$ .getJSON()的PHP頁面。 – NJLaPrell