2013-07-27 116 views
-1

所以我有倒數計時器。計時器達到0後,我需要它來更新數據庫,然後刷新頁面。在jquery裏面刷新頁面

這是我到目前爲止的定時器/更新數據庫。

<script> 
window.onload = function(){ 

(function(){ 
    var counter = <?php echo $timer ; ?>; 

    setInterval(function() { 
    counter--; 
    if (counter >= 0) { 
     span = document.getElementById("count"); 
     span.innerHTML = counter; 
    } 
    // Display 'counter' wherever you want to display it. 
    if (counter === 0) { 


     document.getElementById("response").innerHTML = "<div style=\"float: right; display: inline-block; margin: 6px;\"><div class=\"skip_btn\"><?php $sqll = "UPDATE users SET coins=coins+? WHERE username=?"; 
    $q = $db->prepare($sqll); 
    $q->execute(array('1',$_SESSION['username']));$sqll2 = "UPDATE websites SET clicks_left=clicks_left-? WHERE id=?"; 
    $q2 = $db->prepare($sqll2); 
    $q2->execute(array('1',$row['id']));?></div></div><div style=\"clear:both;\"></div>"; 
    } 

    }, 1000); 

})(); 

} 
</script> 

所以這工作正常定時器和數據庫更新,但現在我需要在那裏,我嘗試側添加更新和做像這樣。

document.getElementById("response").innerHTML = "<div style=\"float: right; display: inline-block; margin: 6px;\"><div class=\"skip_btn\"><?php $sqll = "UPDATE users SET coins=coins+? WHERE username=?"; 
    $q = $db->prepare($sqll); 
    $q->execute(array('1',$_SESSION['username']));$sqll2 = "UPDATE websites SET clicks_left=clicks_left-? WHERE id=?"; 
    $q2 = $db->prepare($sqll2); 
    $q2->execute(array('1',$row['id']));echo'<META HTTP-EQUIV="Refresh" Content="0; URL=dashboard.php">';?></div></div><div style=\"clear:both;\"></div>"; 

但隨後的計時器停止所有一起工作.... 也PHP頭不我的服務器上運行(頭都準備好發送錯誤) 我需要它,所以當計時器命中0將刷新頁。

回答

3

你不能像這樣使用Javascript內部的PHP。您需要使用Javascript(即AJAX)調用服務器端PHP腳本來執行數據庫查詢並將數據返回到Javascript以填充到頁面上。

看來你確實需要嘗試理解服務器端邏輯(在你的情況下是PHP)和客戶端邏輯(Javascript)之間的分離。現在發生的事情是,您正在將您的PHP代碼回顯到Javascript script標記中,這顯然是無效的Javascript。

+0

我可以問爲什麼PHP的作品呢?沒有重定向?如果它不能工作? –

+0

對不起,由於格式不太清楚,我最初並沒有在'script'中看到開始和結束PHP標籤。這是有效的,唯一的問題是它發生在客戶端呈現頁面之前。此時數據庫調用的結果從客戶端角度來看是靜態的。該函數將每次循環時將innerHTML值設置爲相同的值。您仍需要對服務器腳本進行AJAX調用才能從數據庫獲取任何更新的信息。 –