2016-12-30 2 views
1

ASP.NET에서 웹 페이지를 쓰고 있습니다. "if/else"조건절 하나가있는 sessionTimer JavaScript 함수가 있습니다. if 절에서 asp.net 함수를 호출하여 구성 파일에서 변수를 검색 한 다음 else 절에서 또 다른 ASP.net 함수를 호출하여 다른 작업을 수행합니다. 이 코드는 항상 else 루프에서 .asp 함수를 호출합니다. 왜 그런지 말해 줄 수 있니? 서버 그대로 클라이언트로 전송되고 응답으로,이 경우, 함수 Timer_Timedout() 결과를 그 값을 추가의 값을 삽입하는 <%= %> 태그를 사용Javascript 함수는 항상 else 절에서 .asp 메서드를 호출합니다.

var sessionTimeout = 1; 
function Timerfunction() 
{ 
    sessionTimeout = sessionTimeout - 1; 
    var sessiontimoutValue = '<%= GetSessionTimeout() %>'; 

    if (sessionTimeout >= 0) {  
     window.setTimeout("Timerfunction()", sessiontimoutValue); 
    } 
    else { 
     var result = '<%= Timer_Timedout() %>' 
    } 
} 
+1

서버 측 주입을 사용한다는 것은 클라이언트 측 논리가 평가되지 않는다는 것을 의미하며 문자 그대로 응답을 문자열로 쓰므로 매번 호출됩니다. –

+0

여기서 'Timerfunction'을 호출하는 호출은 무엇이고 그 시점에서'sessionTimeout'의 값은 무엇입니까? –

답변

0

.

즉, 이러한 태그 내부의 내용은 자바 스크립트의 클라이언트 측 논리에 관계없이 평가되므로 응답에 포함될 수 있습니다. 이 값을 얻기 위해 서버로 돌아 가지 않고 서버의 초기 응답에 따옴표 안에 그대로 포함됩니다. 즉, 해당 페이지가 요청 될 때마다 함수가 실행됩니다.

클라이언트에서 정의한 논리에 따라 서버에서 세션 상태를 얻으려면 일종의 아약스 또는 추가 요청을 수행해야 할 수 있습니다.

관련 문제