2011-09-16 3 views
4

페이지 제목이 3 초마다 자동으로 업데이트되도록 여러 가지 방법을 시도 했으므로 제목에 읽지 않은 메시지의 수를 표시 할 수 있습니다.문서 제목 자동 새로 고침?

setInterval(function() { 
     document.title = "<?php echo $inboxcc; ?>"; 
    }, 3000); 

$(function() { 
setInterval(function() { 
    $(this).attr("title", "<?php echo $inboxcc; ?>"); 
    }, 3000); 
}); 

그러나 그들 중 누구도 작동하지 : 여기

내가 시도하는 것이다.

답변

5

이 방법은 작동하지 않습니다. PHP 문은 서버 측에서 한 번 실행되므로 JavaScript에서 수행하는 작업에 관계없이 제목은 두 번 이상 변경되지 않습니다. 나는 매 3 그것을 확인하는 것이 좋습니다 것입니다, 당신은 확실히 setInterval 전화에이 코드를 감싸 수있는 반면 : 이제

$.ajax({ 
    url: 'new_page_title.php', 
    data: {name: 'username', password: 'userpass'}, 
    success: function(data) { document.title = data;}, 
    dataType: 'text' 
}); 

:

당신은 성공에 document.title 속성을 설정되는, AJAX를 기반 접근 방식이 필요 초는 서버에서 약간 어려워 질 수 있으며 필요하지는 않습니다. 매 15 ~ 60 초마다 더 부드러워 질 것입니다.

setInterval(function() { 
    $.ajax({ 
     ... 
    }); 
}, 30000); // milliseconds 
+0

몇 가지 수정 사항이 적용되었습니다. 감사합니다 – Andy

1

자바 스크립트 내의 PHP 블록은 자신에 대한 정보를 업데이트 할 수 없습니다. AJAX, 숨겨진 iframe 또는 다른 방법을 사용하여 제목을 업데이트해야합니다. 이 시점에서 코드는 <title> 요소를 동일한 값으로 변경합니다.

7

PHP 블록은 서버에서 페이지보기 당 한 번만 실행되기 때문에 신선한 데이터를 원할 때마다 서버에서 데이터를 새로 고쳐야합니다. 이 같은 PHP 페이지를 확인하십시오 : 당신은 모든 요청이 반환됩니다 확신 할 수 없기 때문에 내가 대신 setIntervalsetTimeout를 사용

var updater = function() { 
    $.getJSON('data.php',function(jsonuser){ 
     document.title = jsonuser.inboxcc; 
     setTimeout(updater,3000); 
    }); 
}; 

setTimeout(updater,3000); 

참고 :

<?php 
    // data.php 
    // Grab the user from the session and calculate the 'unread messages' value 
    $user['inboxcc'] = the_unread_messages_value; 
    echo json_encode($user); 
?> 

는 다음과 같이 동적으로 수를 당겨 3 초. setTimeout을 사용하면 일반적으로 더 좋습니다.

+0

data.php 페이지에 무엇을 넣을지 모르겠습니다. – Andy

+0

@Andy : 원래 페이지에서 $ inboxcc 값을 계산하는 데 사용하는 코드가 있어야합니다. 그 값을 $ user [ 'inboxcc'] = the_value 라인과 함께 사용자 객체에 넣으십시오. –

+0

작동하지 않습니다. 나는 틀린 일을해야만합니다. 하지만 어쨌든 고마워요 – Andy

-1

PHP 코드는 자바 스크립트 해석, 그래서 숨겨진 입력의 값을 숨길 수 없습니다

<input type="hidden" id="inboxcc" value="<?php echo $inboxcc; ?>"> 

지금 당신이 자바 스크립트의 값을 호출 할 수 있습니다

setInterval(function() { 
     document.title = document.getElementById('inboxcc').value; 
    }, 3000); 
+0

HTML의 '

3

것은 보완하기를 @ mblase75의 답변 (올바른 내용입니다)에 대한 일반적인 오해에 대한 자세한 설명은 다음과 같습니다.


PHP는 서버 측 전처리 HTML을 출력하고 브라우저로 전송됩니다 자바 스크립트, 다음 아무것도 할 아무것도 없다.

그래서, 당신의 PHP :

<script type="text/javascript"> 
setInterval(function() { 
    document.title = "Title"; 
}, 3000); 
</script> 

이 브라우저가 보는 것입니다 :

<?php $inboxcc = 'Title'; ?> 
<script type="text/javascript"> 
setInterval(function() { 
    document.title = "<?php echo $inboxcc; ?>"; 
}, 3000); 
</script> 

출력을 얻을 수 있습니다. 그리고 그게 다야.

+0

그렇게 많은 의미가 있습니다. 너무 어리 석어 내가 실제로 작동한다고 믿는 것 같아. – Andy

+0

@Andy : 네, 약간 ;-) –