0

1分後にセッションを自動的に破棄したい。しかし、session.timeoutは私にとってはうまくいきません。私のコードを見直してください。

作成.asp

<%

Session.Contents.RemoveAll()

Session("page") = "Active"
Session.timeout = 1
Response.Redirect "time.asp"

%>

時間.asp

<%

Response.Write(Session("page"))

if Session("page") = "Active" then 
Response.Write( "Session is Active,This Page will Expire After 1 mintue ") 

%>



<h2> Time Out: <span id="timerLabel" runat="server">65</span> </h2>

<script type="text/javascript">

    function countdown() 
    {
        seconds = document.getElementById("timerLabel").innerHTML;
        if (seconds > 0) {
            document.getElementById("timerLabel").innerHTML = seconds - 1;
            setTimeout("countdown()", 1000);
        } else { location.reload(); }
    }

    setTimeout("countdown()", 1000);

</script>

<% else %>

<a href='create.asp'> Click Here to Create Session </a>

<% End if %>
4

1 に答える 1

0

15 秒余分に必要なようですが、その理由はわかりません。開始を 75 秒に設定すると、機能するはずです。

その他のいくつかのこと:

  • runat="server"ASP.Net アプリケーションでのみ機能します。クラシック ASP では無視されます。
  • SetInterval繰り返し呼び出すのではなく、使用する必要がありますSetTimeout
  • SetTimeoutのタイミングやSetInterval完璧な比較に必ずしも頼ることはできません。より良い方法は、日付のタイムスタンプを比較することです。

これは、これらすべてに合わせて調整され、小数点以下 1 桁も表示されるように拡張された関数です。

var countDownSeconds = 75;
document.getElementById("timerLabel").innerHTML = countDownSeconds;
var start = new Date().getTime();

function countdown() {
    var elapsedSeconds = (new Date().getTime() - start) / 1000;
    var secondsRemaining = countDownSeconds - elapsedSeconds;
    if (secondsRemaining > 0) {
        document.getElementById("timerLabel").innerHTML = secondsRemaining.toFixed(1);
    } else {
        location.reload();
    }
}

setInterval("countdown()", 100);

繰り返しますが、クラシック ASP セッション タイムアウトが実際に呼び出されるまでに 15 秒余分にかかる理由がわかりません。ごめん。

于 2013-09-09T16:39:29.980 に答える