2013-08-23 87 views
-1

我想要做的就是讓一個變量來更新每5秒這樣做:的setInterval似乎並沒有重新執行PHP腳本

setInterval(document.getElementById("listeners").innerHTML = 
    "<?php include('../includes/shoutcaststuff.php'); 
    echo $dnas_data['CURRENTLISTENERS']; ?>",5000); 

,但發生的事情是內部HTML設置,但不會每5秒更新一次。 我的猜測是,PHP只執行一次,但我不知道如果是這樣的話。 ,我知道我應該做一個函數來做setInterval裏面的東西......我會清理代碼,一旦我找出如何使它工作。 在此先感謝。

ok ... ajax是'最好的'答案,因爲在這裏一次不會有超過2個人登錄,所以服務器請求並不是什麼大不了的事情。 這裏就是我得到了它的工作:

function lCount(){ 
    $.get("../includes/shoutcaststuff.php",{Count: "TRUE"}, function(data){ 
     document.getElementById('listeners').innerHTML = data; 
    }); 
} 

setInterval(lCount,5000); 

,並已將此添加到PHP的末尾:

if(isset($_GET["Count"])){ 
echo $dnas_data['CURRENTLISTENERS']; 
} 

現在它工作正常。

感謝您的建議傢伙:)

+1

你不能直接用javascript執行PHP。您可能正在尋找AJAX – JCOC611

回答

0

<?php include('../includes/shoutcaststuff.php');
echo $dnas_data['CURRENTLISTENERS']; ?>

頁建成時,該代碼只執行一次。對於其他時間來說,這個JavaScript被稱爲無論首先回聲將是價值。

而不是在這裏使用一個靜態值,你將需要使用ajax請求(或者如果你想使用html5 websocket)。該請求將每5秒鐘觸擊一次您的服務器。請記住,這可能會導致服務器上的負載過重。

Ratchet是一種常用的PHP WebSocket實現,允許使用推送技術將數據發送到客戶端。這可能比使用輪詢方法更可取。

0

PHP代碼運行在生成HTML/JS的服務器上。如果您需要在頁面加載後運行php代碼,請使用ajax。

看看這個例子;

使用此:

setInterval(document.getElementById("listeners").innerHTML = 
"<?php echo "1";?>",5000); 

威爾其輸出到瀏覽器:

setInterval(document.getElementById("listeners").innerHTML = 
"1",5000);