2013-07-27 3 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

자바 스크립트에서 PHP를 사용할 수 없습니다. 자바 스크립트 (예 : AJAX)를 사용하여 서버 측 PHP 스크립트를 호출하여 데이터베이스 쿼리를 수행하고 데이터를 자바 스크립트로 반환하여 페이지에 채워야합니다.

서버 측 로직 (귀하의 경우에는 PHP)과 클라이언트 측 로직 (자바 스크립트) 사이의 분리를 이해해야 할 필요가있는 것 같습니다. 지금 일어나고있는 일은 PHP 코드를 Javascript script 태그에 반향시키고 있다는 것입니다. 이는 분명히 유효하지 않은 Javascript입니다.

+0

왜 PHP가 작동하는지 질문 할 수 있습니까? 리디렉션을 사용하지 않습니까? 그것이 작동하도록 지시하지 않는다면? –

+0

죄송합니다. 처음에는 형식이 매우 명확하지 않기 때문에'script' 내에 PHP 태그를 열고 닫는 것을 보지 못했습니다. 이 문제는 클라이언트에서 페이지가 렌더링되기 전에 발생하는 유일한 문제입니다. 이 시점에서 데이터베이스 호출의 결과는 클라이언트 관점에서 정적입니다. 이 함수는 루프 할 때마다 innerHTML 값을 같은 것으로 설정합니다. 데이터베이스에서 업데이트 된 정보를 얻으려면 서버 스크립트에 대한 AJAX 호출을해야합니다. –

관련 문제