2011-09-03 5 views
2

페이지로드 및 언로드에서 호출되는 javascript 함수를 사용하여 세션 변수를 설정 및 해제합니다. 이 (jQuery를 사용)와 같은 현재 (PHP에 맞춰) 자바 스크립트는

window.onbeforeunload = function() { 
    $.post('Example.php?y=".$id."&dir=0'); 
} 

$(document).ready(function() { 
    $.post('Example.php?y=".$id."&dir=1'); 
}); 

은 두 $ ID가 페이지로 전달 된 변수 PHP 스크립트에 포함되어 보인다. Example.php는 ajax를 사용하여 호출 된 스크립트로 dir = 1 인 경우 변수 $ id를 $ _SESSION 변수로 저장된 배열에 추가하고 dir = 0 인 경우 변수를 배열에서 제거합니다.

문제는이 때가 예상대로 작동한다는 것입니다. 페이지를로드하면 세션 배열이 항상 올바르게 업데이트됩니다. 페이지를 언로드하면 때로는 작동하고 때때로 그렇지 않습니다. 내 생각 엔 이들은 비동기 함수이므로 변수가 .ready 함수 호출에 의해 설정되고 페이지가 언로드 된 후입니다. 그러나 페이지가 잠시 동안 앉아있게 한 다음 페이지를 언로드하더라도 일관성이 유지됩니다. 언로드 기능에서 내가 잘못하고있는 것이 있습니까?

  • 시도 설정 아약스 : 그냥 작동하지 않았다 포스트 호출 $(window).unload() JQuery와 구성하여 시도

  • , 거짓.

+0

언로드시 게시물이 서버로 전송 된 경우 서버 로그에이 정보가 있어야한다는 정보를 명시하십시오. –

답변

1

$ .post가 비동기 구글 크롬을 사용

  • ; 즉, 함수가 반환 될 때 요청이 아직 수행되지 않았을 수 있습니다.

    는 동 기적으로 요청을 시도해보십시오

    $.ajax('Example.php..', { 
        async: false, 
        type: 'POST' 
    }); 
    

    jQuery.ajax 설명서를 참조하십시오.

  • +0

    빠른 응답을 보내 주셔서 감사합니다. 그래도 이걸 사용해 보지. – CaptainStiggz

    +0

    하지만 문제는 페이지를 닫을 때 페이지를 닫을 때 중요 하지요. 요청이 전송 된 경우에만로드됩니다. –

    관련 문제