0

クライアント側でサーバー側のセッションをクリアする適切な方法はありますか?私はJavaスクリプトを使用してセッションをクリアしますが、ページがリダイレクトされると、サーバー側のセッション値がクリアされます。ここでクリックイベントが発生しない場合でも、LIのONCLICKで呼び出すJavaスクリプトコードです。

<script type="text/javascript">
     function Clear_() {

         '<%=Session["UID"]=""%>';// only this line executes when ever the page is redirected.

         alert('ok');
     }
  </script>
4

5 に答える 5

1

こんにちは、このコードで試すことができます

function Clear()
{
    location.href="logout.aspx";
}

ファイルlogout.aspx.csの背後にあるコード

  Session.Clear();
于 2012-07-29T17:40:48.363 に答える
0

あなたができることは「javascriptからサーバーサイドページを呼び出し、そこでセッションをクリアする」です。

jQueryを使用している場合は、このように簡単です

<a href="somepage.aspx" id="logout">Logout</a>

<script type="text/javascript" >
 $(function(){
   $("#logout").click(function(e){
      e.preventDefault();
      $.post("logout.aspx",function(data){
          //now do something in client side. May be show a message to user
         alert("Succesfully logged out");
      });

   });
 });
</script>

logout.aspxページのロードイベント内で、セッションをクリアしていると想定されます。ユーザーがログアウトしたら、UIの一部(ログインしたユーザー名、一部のリンクなど)を更新する必要がある場合があります。

于 2012-07-29T17:54:43.510 に答える
0

これが発生する理由は、ページが解析されている間、常にサーバー側のタグを探して最初に実行するためです。サーバー側の制御を解析するのと同じです。したがって、コードを記述した場合でも、任意のボタンのクリックイベントで起動するために、コードはロードされるたびに実行されます。サーバータグのコードにコメントを付けようとしても、コードは実行されます。

関数Clear_(){

    // '<%=Session["UID"]=""%>';// still this line executes

     alert('ok');
 }   </script>

あなたの問題への答えはNOです。セッションはサーバー側として保存されますが、どのようにしてそれをクリアすることができますか?サーバーにAJAXリクエストを送信し、サーバー上のセッションをクリアする必要があります

更新2

これは、サーバー制御のためにaspxページが解析されるのと同じです。これらのサーバータグは、リクエストがサーバーにある間に処理され、値を評価する必要があります。たとえば、JavaScriptの値を、サーバー上のセッション値から入力する場合です。

//javascriptで
varmyValue= <%= Session ["SomeVal"]%>

したがって、ページが解析されると、サーバータグ内の値が評価され、実際の値に置き換えられます(制御の場合はhtmlに置き換えられます)。したがって、クライアントに送信される最終出力では、次のマークアップが送信されます

//javascriptで
varmyValue= 50;

ブラウザから「ソースの表示」を確認することで確認できます。

于 2012-07-29T17:54:50.563 に答える
0

JavaScriptでページメソッドを使用できます

PageMethods.EndSession();

[WebMethod()]
public static void EndSession()
{
    HttpContext.Current.Session.Abandon();
}

EnablePageMethodsScriptManagerのに設定することを忘れないでくださいtrue

于 2012-07-29T17:58:56.740 に答える
0

クライアント側からセッションを削除することはできないと思いますbczセッションはサーバー側です。クライアントブラウザからすべてのCookieをクリアすると、セッションが削除される可能性があります。セッションを作成するときにbczも削除されます。asp.netは、asp.netセッションの削除に成功した場合に、クライアントブラウザに保存されるセッションIDを生成します。その後、cookieはセッションも削除される可能性があります。

于 2012-07-29T18:21:35.390 に答える