2013-07-17 37 views
10

セッション変数を扱うクラスがあります。ここに添付されているサンプルは以下のとおりです。 JavaScriptを使用してセッション値を取得する方法

namespace General 
{ 

    public class Session 
    { 
     public Session() 
     { 
     } 


     public static string UserID 
     { 
      get { return HttpContext.Current.Session["UserID"] as string ?? String.Empty; } 
      set { HttpContext.Current.Session["UserID"] = value; } 
     } 

     public static string departFlightID 
     { 
      get { return HttpContext.Current.Session["departFlightID"] as string ?? String.Empty; } 
      set { HttpContext.Current.Session["departFlightID"] = value; } 
     } 

     public static string returnFlightID 
     { 
      get { return HttpContext.Current.Session["returnFlightID"] as string ?? String.Empty; } 
      set { HttpContext.Current.Session["returnFlightID"] = value; } 
     } 
} 

} 

は現在、いくつかの点で私は中 flightIDを格納します。

General.Session.departFlightID = flightID; 

し、別の時点で、私はJavascriptを使用してこの値を取得します。私はここで例を見ましたが、動作しません(エラーはありませんが、返されるのはEMPTYです)。

最新の試み:

var session = '<%= General.Session.departFlightID %>'; 
var session = '<%= HttpContext.Current.Session["departFlightID"] %>'; 

私は、ページの読み込みに値を設定し、私は、私はHTMLを作成するWebメソッドを実行していますし、その後にdivの内側に移入するために戻っているHTMLを送信する場合には作業を行いますそこに切符を作ってください。私はセッション値を取得する必要がありますが、更新されません。ここではそれがより明確にする

はJavascriptコードです:

<script type="text/javascript"> 


function addTicket(flightID, flightType) { 
    PageMethods.addTicket(flightID, flightType, OnGetMessageSuccess); 
} 

function OnGetMessageSuccess(result, userContext, methodName) { 

    var pageUrl = document.URL; 
    if (pageUrl.indexOf("&ret_date=&") !== -1) { 

     var session = '<%= HttpContext.Current.Session["departFlightID"] %>'; 

     alert(session); 
     result = result + "<a onclick=\"searchflight.abortAllAjax()\" data-index=\"6\" class=\"bookNow\" title=\"Book Now!\" href=\"#\">Book Now!</a>"; 
     result = result + "</div> </div> </div>"; 
     document.getElementById("detail").innerHTML = result; 
    } 

} 

そして、ここでは、WebMethod属性です:

[System.Web.Services.WebMethod] 
    public static string addTicket(string flightID, string flightType) 
    { 
     //GET FLIGHT DETAILS FROM DATATABLE OR SESSION DATA TABLE 
     string tmpHtml = string.Empty; 
     tmphtml="sample"; 
     string flightID="123123213"; 
     General.Session.departFlightID=flightID; 

    return tmphtml; 
    } 
+0

あなたが試してみました: 'VARセッション=「<%= HttpContext.Current.Session [ "departFlightIDを" あなたのWebMethod属性の宣言は次のようになります。 ]; %> '; '? – karaxuna

+0

@karaxunaいいえ、私にチェックさせてください... – confusedMind

+0

編集コメント.. – karaxuna

答えて

2

これはhereと同じ質問です。

通常、セッション変数には機密データが含まれているため、常にサーバー側です。それでもあなたが望むなら、あなたの.aspxマークアップにHiddenFieldを追加して、後ろのコードでそれを設定することができます。値が設定されると、$( "#id")wayまたはDocument.GetElementById()メソッドを使用して値に非常に簡単にアクセスできます。

0

WebMethodsはデフォルトでセッション変数をサポートしていません。あなたは、MVCを使用している場合は

[WebMethod(EnableSession = true)] 
+0

残念ながらそれはありません。 – confusedMind

2

var ttype = ' @HttpContext.Current.Session["TestType"] '; 
関連する問題