2016-12-30 8 views
1

私はASP.NETでWebページを作成しています。私は1つの "if/else"条件節を持つsessionTimer JavaScript関数を持っています。 if節でasp.net関数を呼び出してconfigファイルから変数を取得し、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

これは、これらのタグ内のものは、javascriptのクライアント側ロジックに関係なく評価されるため、レスポンスに含めることができることを意味します。これらの値を取得するためにサーバーに戻ることはありません。サーバーからの最初の応答の引用符に文字どおり含まれます。つまり、そのページが要求されたときにいつでも関数が実行されます。

クライアントで定義したロジックに基づいて、サーバーからセッションステータスを取得するために、何らかの種類のAjaxや追加のリクエストを実行する必要があります。

関連する問題