-1

所以我有一个倒计时。计时器达到 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 时它会刷新页面。

4

1 回答 1

3

你不能像那样在 Javascript 中使用 PHP。您需要使用 Javascript(即 AJAX)调用服务器端 PHP 脚本来执行数据库查询并将数据返回到 Javascript 以填充到页面上。

看来您确实需要尝试了解服务器端逻辑(在您的情况下为 PHP)和客户端逻辑(Javascript)之间的分离。现在发生的事情是您将 PHP 代码回显到 Javascriptscript标记中,这显然是无效的 Javascript。

于 2013-07-27T00:32:00.657 回答