2013-05-20 3 views
0

Я проделал простую страницу, чтобы перейти на другую страницу по окончании сеанса. Я установил время как 50 секунд, и после этого он переместится на страницу. Но, к сожалению, это не движение, и я беспомощен, чтобы узнать, где это неправильно. Я был бы очень признателен, если вы, пожалуйста, решить мою проблемустраница не перенаправляется после окончания сеанса

function x(){ 
     var timeOut =<%=session.getAttribute("login")%>; 

var checkTimeout; 

checkTimeOut = function(){ 
    if(timeOut==null || timeOut==""){ 
     window.location.replace("failedSession.jsp"); 
//document.getElementById("b").innerHTML="session timed out"; 
     // redirect to timeout page 
    }else{ 


     window.setTimeout(checkTimeOut, 1000); // check once per second 
    }} 
checkTimeOut(); // this is where you insert checkTimeOut function so that when you call x(), this will execute in the end. 
} 
+0

Вы найдете, что ваш код будет легче читать, если вы положите точку с запятой в конце этой строки JavaScript, чтобы она соответствовала другим: var timeOut = <% = session.getMaxInactiveInterval()%>; –

ответ

0

Проблема с кодом:

Нигде в вашем коде, вы звоните checkTimeOut();. Вот почему он не выполняется. Вы должны были проверить выполнение функции, поставив alert внутри функции. Вероятно, сделайте это во время body onload, как предположил @rgeorge.

Примечание: Ваша логика выглядит хорошо. Также есть привычка ставить точки с запятой после javascriptзаявления как @Mark.

Ответ Обновлено:

1) Не используйте function name и variable имя же. Например: x. Имени уникальны. Это противоречиво.

2) Ваш x всегда больше lastActivity + timeOut потому x не увеличивается (7> 1 + 1). Это означает, что условие else никогда не будет выполнено. Это означает, что checkTimeOut никогда не будет вызван.

3) Ваша функция checkTimeOut() сама никогда не будет выполняться, потому что она никогда не вызывается нигде. Вы выполняете только x(). Этого недостаточно, чтобы позвонить checkTimeOut().

Ответ Обновлено:

Do, как это:

<script type="text/javascript"> 
function x(){ 
     var timeOut =1; 
var lastActivity = 1; 
var x=7; 

var checkTimeout; 

checkTimeOut = function(){ 
    if(x > lastActivity + timeOut){ 
document.getElementById("b").innerHTML=x; 
     // redirect to timeout page 
    }else{ 
     window.setTimeout(checkTimeOut, 1000); // check once per second 
    }} 
checkTimeOut(); // this is where you insert checkTimeOut function so that when you call x(), this will execute in the end. 
} 

    </script> 

Ваш код отлично работает для меня. Значение DIV изменяется на 7. И вот что делает ваш код >>http://jsfiddle.net/hmHP9/

+0

спасибо за ответ, я пробовал его по-другому и, следовательно, забыл опубликовать код originla. хорошо я отредактировал мой пост и даже все еще не работает –

+0

Я manullay давая значения и проверяя но его не dsiplaying x –

+0

проверить обновленный ответ. –

0

Код, который вы вставили не кажется, не вызывая функцию checktimeout первоначально. Это относится и к вашему пересмотренному коду. Он определяет только функцию checktimeout().

Я бы добавил вызов функции onload тегу body, который вызывает checktime в первый раз.

function startTimeoutCheck() { 
    window.setTimeout(checkTimeout, 1000); 
} 

<body onload="startTimeoutCheck()"> 
    .... 
</body> 

Переменная checktimout должна, очевидно, находиться в области (глобальной) вышеуказанной функции.

+0

спасибо за ответ, и я отредактировал мое сообщение и даже все еще не работает –

Смежные вопросы