所以我有一个倒计时器。在计时器命中0后,我需要它来更新数据库,然后刷新页面。
以下是我到目前为止的计时器/更新数据库。
<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时,它将刷新页面。
答案 0 :(得分:3)
你不能在这样的Javascript中使用PHP。您需要使用Javascript(即AJAX)来调用服务器端PHP脚本来执行数据库查询并将数据返回到Javascript以填充到页面上。
看来你真的需要尝试理解服务器端逻辑(在你的情况下为PHP)和客户端逻辑(Javascript)之间的分离。现在发生的事情是您将PHP代码回显到Javascript script
标记中,这显然是无效的Javascript。