2012-03-19 7 views
8

httpRequest.getSession( "attr_name")のような動的変数の値をJavaScriptから読み取ることはできますか?JavaScriptでHTTPセッションオブジェクトを読み取ることはできますか?

+3

ajax呼び出しに戻すことができるサーバーメソッドがある場合は、はい。 – asawyer

+0

どのようなサーバー側の言語を使用していますか?セッションはどのように追跡されていますか? –

+1

クライアント側のJSを指している場合:いいえサーバーマシン上にJS環境がある場合は、それらのパラメータをそこに送ることができます。あなたのサーバー言語はJavaだと思いますか? – Sirko

答えて

13

(JavaScriptを使用して、私はあなたがブラウザでクライアントスクリプトを意味していることを前提としています。)

いいえ、それは不可能です。 Sessionオブジェクトの内容は決してサーバーから離れません。そのため、クライアントスクリプトはSessionデータを直接読み取ることができません。

ブラウザにアクセスしたい場合は、Sessionオブジェクトからデータを読み込み、レスポンス(たとえば、非表示フィールド)に送信するか、またはデータを読み取るWebサービスを提供する必要がありますセッションオブジェクトを開き、ブラウザに戻ります。

+0

あなたの声明のバックアップをいくつか表示できますか? – FranXho

3

私のコメントで言ったように、唯一の方法は何らかのAjax呼び出しであり、サーバーからリクエストすることです。私はあなたのバックエンドがあなたの使い方を知らない、ここで私はAsp.netのMVCとjQueryでそれをやるだろう。

(マイナー構文エラーがある場合は、私は謝罪 - ないコンパイラの前で)

public class HomeController : Controller 
{ 

    //abstract the session code away, don't let the evil javascript touch 
    //it directly. Ideally this would all be in a seperate logic class or something. 
    public string NameAttribute 
    { 
     get 
     { 
      return Session["attr_name"] as string ?? string.empty; 
     } 
    } 
    [HttpGet] 
    public string GetNameAttribute() 
    { 
     return NameAttribute; 
    } 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 



<script> 
$(function(){ 
    $.get('home/GetNameAttribute', function(response) { 
     var name = response; //don't forget error checking, ommited 
    }); 
}); 
</script> 

また、あなたは常にあなたが隠されたフィールドに必要な値を書き留め、通常のJavaScriptでそれらを読むことができます。

関連する問題