2012-12-06 26 views
0

我目前有一個php文件,可以自動播放播放列表頂部的歌曲。我有一個$duration值,我從MySQL數據庫中提取,我希望頁面在歌曲播放結束後自動刷新。如何基於一個php變量在一定時間後自動重新加載頁面

該歌曲目前在iframe中播放,因此這是唯一可以告訴歌曲已經完成的方式。

我試過在javascript中這樣做,但我有問題試圖將超時期限傳遞給變量。

<script type="text/JavaScript"> 
    function timedRefresh(timeoutPeriod{ 
     setTimeout("location.reload(true);",timeoutPeriod); 
    } 
</script> 

<body onload="JavaScript:timedRefresh($x);"> 
    ... 
</body> 
+0

http://codeforbrowser.com/blog/lesser-known-facts-about-html/ – defau1t

回答

2

您也可以使用META標籤進行刷新。

在PHP:

<?php 
    $Refresh = 600; 
?> 

而在你的HTML的頭,你可以修改META標籤:

<meta http-equiv="refresh" content="<?= $Refresh ?>"> 

或由Amadan說,你可以只使用PHP來指定元在您的PHP標籤:

header("Refresh: " . $Refresh); 

O R IN的Javascript:

<script type="text/JavaScript"> 
    setTimeout("location.reload(true);",<?= $Refresh ?>); 
</script> 

旁註

短標籤:

<?= $Variable, $Variable2 ?> 

正在使用相當於:

<?php echo $Variable; echo $Variable2; ?> 
+2

如果是PHP,不妨發送'Refresh'標題。 ['meta'](http://en.wikipedia.org/wiki/Meta_refresh#Drawbacks)只是在無法操作標題的情況下模擬它。 – Amadan

+2

請注意,PHP配置並不總是允許使用短標籤<?=',儘管5.4.0之後它應該始終可用。 – sachleen

+0

偉大的答案..謝謝! –

3

它僅僅是一個簡單的PHP變量輸出到源:

<script type="text/JavaScript"> 
<!-- 
function timedRefresh(timeoutPeriod){ 
    setTimeout("location.reload(true);",<?php echo $song_duration_in_milliseconds; ?>); 
} 
</script> 

或者使用@Matt Clark的答案中指出的元刷新。

+0

此解決方案無需使用函數參數。 – sachleen

+0

@sachleen這是正確的。我只是把它放在OP現有代碼的框架內。你可能完全失去整個功能,只是'setTimeout' –

+0

夠好。這就是我會做的,因爲你可能永遠不會在稍後/特定時間調用該函數。 – sachleen

相關問題