2014-11-24 3 views
-1

3 초마다 페이지를 새로 고치려고합니다. URL 페이지가 $ _GET 변수로 변경됩니다. 세션 및 쿠키에 $ _GET var를 저장하려고하는데 오류 헤더가 이미 전송되었습니다. 페이지 새로 고침 후 url을 변경하는 방법은 무엇입니까?ajax로 URL 페이지 다시로드

여기

내 스크립트를 Index.php는

<?php 
session_start(); 
$skill =$_SESSION['skill']; 

?> 
<script type="text/javascript"> 
    var auto_refresh = setInterval(function() { 
     $('#src2').load('monitor.php?skill=<?php echo $skill;?>').fadeIn("slow"); 
    }, 3000); 
</script> 

세션을 설정하는 경우 코드를 보지 않고 monitor.php

<?php 
include "conn.php"; 
session_start(); 
$_SESSION['skill'] = $_GET['skill']; 

if ($_SESSION['skill']=='') 
    { 
    $a ="bro"; 
    $_SESSION['skill']=4;} 
elseif ($_SESSION['skill']==4){ 
    $a = "yo"; 
    $_SESSION['skill']='5'; 
    } 
    elseif ($_SESSION['skill']==5){ 
    $a = "soo"; 
    } 

?> 
+0

이미 보내진 후 PHP로 헤더를 변경할 수 없습니다. windows.reload (javascript) 또는 일부 창을 사용할 수 있습니다.location (Javascript) –

+0

session_start()를 호출하거나 쿠키를 설정하기 전에 무엇인가 반향합니까? – motanelu

+0

"세션과 쿠키에 $ _GET var을 저장하려고합니다."- 우리와 공유 한 코드가 아닙니다. – Quentin

답변

0

먼저 "헤더가 이미 전송되었습니다"는 오류를 일으키는 파일 (오류 메시지의 나머지 부분 읽음)에 출력이 있음을 의미합니다. 가장 일반적인 원인은 파일 시작 부분에있는 <?php 태그 앞에 공백이 있지만, echo 및 기타 출력 키워드를 확인하십시오. 헤더 (쿠키 설정 포함) 은 출력 전에을 보내야합니다.


는 여기부터,이 답변은 질문의 "페이지를 새로 고침"부분을 구현할 수있는 방법에 대해 설명합니다. 당신이 제공 한 코드는 지금 당장 어떻게하는지 보여주지는 않습니다.

두 번째로 페이지를 새로 고치려면 JS가 확인하는 monitor.php 끝에 무언가를 반향시켜야합니다. 쉬운 방법은 단지 JS 새로 고침 반향하는 것입니다

echo '<script>window.location.reload();</script>'; 

하지만 일부 JSON 출력하는 것이 좋습니다를하는 당신의 index.php 다음에 대한 검사 :

// monitor.php 
echo json_encode(array('reload' => true)); 

// index.php 
$('#src2').load('monitor.php?skill=<?php echo $skill;?>', function(response) { 
    if (response.reload) window.location.reload(); 
}).fadeIn('slow'); 

마지막으로 참고 : response은 JS 콜백 함수 내에 그냥 평범한 텍스트라는 것을 알 수 있습니다 :

// index.php 
$('#src2').load('monitor.php?skill=<?php echo $skill;?>', function(response) { 
    response = $.parseJSON(response); // convert response to a JS object 
    if (response.reload) window.location.reload(); 
}).fadeIn('slow'); 
-1

, 내가 문제를 생각 하는가 거기에있다. 브라우저에 데이터를 보내기 전에 세션을 시작해야합니다.

은 한 번보세요 : http://php.net/session_start

편집 : 조금 빠른, 죄송합니다, 당신은 'conn.php'파일에 브라우저로 일부 데이터를 보내는 것이 될 수 있을까? 파일 끝 부분의 새 줄처럼?

0

시도 각 페이지에

session_start() 

전에

ob_start() 

퍼팅. 이렇게하면 문제가 해결됩니다.