그래서 카운트 다운 타이머가 있습니다. 타이머가 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에 도달 그래서 때가 새로 고침됩니다 필요 페이지.
왜 PHP가 작동하는지 질문 할 수 있습니까? 리디렉션을 사용하지 않습니까? 그것이 작동하도록 지시하지 않는다면? –
죄송합니다. 처음에는 형식이 매우 명확하지 않기 때문에'script' 내에 PHP 태그를 열고 닫는 것을 보지 못했습니다. 이 문제는 클라이언트에서 페이지가 렌더링되기 전에 발생하는 유일한 문제입니다. 이 시점에서 데이터베이스 호출의 결과는 클라이언트 관점에서 정적입니다. 이 함수는 루프 할 때마다 innerHTML 값을 같은 것으로 설정합니다. 데이터베이스에서 업데이트 된 정보를 얻으려면 서버 스크립트에 대한 AJAX 호출을해야합니다. –