web-dev-qa-db-ja.com

セッション変数にアクセスしてそれらをJavaScriptで設定する方法

分離コードでは、Sessionにデータを設定しました。

Session["usedData"] = "sample data";

そして問題は、Session値(私の例では "sample data")をjavascriptで取得し、Session["usedData"]に新しい値を設定する方法を教えてください。

71
Mehmet Ince

Javascriptを使用したセッション変数へのアクセスと割り当て:

Javascriptを使用してASP.NETセッション変数を割り当てる

 <script type="text/javascript">
function SetUserName()
{
    var userName = "Shekhar Shete";
    '<%Session["UserName"] = "' + userName + '"; %>';
     alert('<%=Session["UserName"] %>');
}
</script>

Javascriptを使用したASP.NETセッション変数へのアクセス:

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

        var username = '<%= Session["UserName"] %>';
        alert(username );
    }
</script>
55
SHEKHAR SHETE

JavaScriptから直接Sessionにアクセスすることはできません。

あなたは隠しフィールドを作ってそれをあなたのページに渡し、そしてJavaScriptを使ってdocument.getElementByIdを通してオブジェクトを取得することができます。

21
Darren

Javascriptは直接セッション値を設定することはできません。 JavaScriptからセッション値を設定するために、私は次のようにajax呼び出しを行います。

オンラインでチェック

ASPxファイルまたはHTMLで、

 <script type="text/javascript">
 $(function(){
   //Getting values from session and saving in javascript variable.
   // But this will be executed only at document.ready.
   var firstName = '<%= Session["FirstName"] ?? "" %>';
   var lastName = '<%= Session["LastName"] ?? "" %>';

   $("#FirstName").val(firstName);
   $("#LastName").val(lastName);

   $('Button').click(function(){
     //Posting values to save in session
     $.post(document.URL+'?mode=ajax', 
     {'FirstName':$("#FirstName").val(),
     'LastName':$("#LastName").val()
     } );
   });

 });

サーバー側では、

protected void Page_Load(object sender, EventArgs e)
 {
      if(Request.QueryString["mode"] != null && Request.QueryString["mode"] == "ajax")
      {
        //Saving the variables in session. Variables are posted by ajax.
        Session["FirstName"] = Request.Form["FirstName"] ?? "";
        Session["LastName"] = Request.Form["LastName"] ?? "";
      }
 }

ShekharとRajeevによって言われるように、セッション値を得るために

var firstName = '<%= Session["FirstName"] ?? "" %>';

お役に立てれば。

11
Ganesh

これを試して

var sessionValue = '<%=Session["usedData"]%>'
11
Rajeev Kumar

あなたが「クライアントサイドのJavaScript」を意味すると仮定すると - それはできません、少なくとも直接ではありません。

セッションデータはサーバーに格納されるため、クライアント側のコードはサーバーと通信しないとそれを見ることができません。

これにアクセスするには、HTTPリクエストを行い、サーバーサイドプログラムにデータの修正/読み取り&返却を依頼する必要があります。

7
Quentin

分離コードファイルの隠しフィールドに値を割り当てます。通常のHTMLコントロールのように、JavaScriptでこの値にアクセスしてください。

4
btevfik

Javascriptからセッション側のセッション変数を設定することはできません。これを行いたい場合は、サーバーでこれを更新するためにAJAXPOSTを作成する必要があります。車は主要なイベントであり、POSTのほうが簡単です。

2
Mohaimin Moin

プロパティに変数を設定してjsから呼び出すこともできます。

サーバー側:

Protected ReadOnly Property wasFieldEditedStatus() As Boolean
    Get
        Return If((wasFieldEdited), "true", "false")
    End Get
End Property

そして、JavaScriptで:

alert("The wasFieldEdited Value: <%= wasFieldEditedStatus %>" );
1
Off The Gold

サーバー側で.phpファイルを使用していると仮定して、セッション変数にアクセスするための非常に簡単な解決策が見つかるまで、私はこの問題の解決策を探していました。質問の一部に答えてください。

アクセスセッション値

<script type="text/javascript">        
    var value = <?php echo $_SESSION['key']; ?>;
    console.log(value);
</script>

編集:あなたは "コードスペース"タブで、あなたがphpfiddle.orgで試すことができる以下のより良い例、

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <?php
    $_SESSION['key'] = 10;
    $i = $_SESSION['key'];
  ?>
 </head>
 <body>
  <p id="affichage">hello</p>

  <script type="text/javascript">
    var value =  <?php echo $i; ?>;
    $("#affichage").html(value);   
  </script>

 </body>
</html>

セッション値の設定

それには何でも変数を渡してください。例えば、

$you = 13;
$_SESSION['user_id'] = $you;

これはうまくいくはずです、テストしていません。

1
Matthieu

最初にセッションを設定するためのコードビハインドでメソッドを作成します。

 [System.Web.Services.WebMethod]
 public static void SetSession(int id)
 {
     Page objp = new Page();
     objp.Session["IdBalanceSheet"] = id;
 }

それからクライアント側からそれを呼び出します。

function ChangeSession(values) {
     PageMethods.SetSession(values);
     }

enablePageMethodsをtrueに設定する必要があります。

<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
1
Behnam

JavascriptのSessionの値を読みたい場合。このコードは役に立ちます。

<script type='text/javascript'> var userID='@Session["userID"]'; </script>

1
Chandan Rajbhar

私は簡単なURLパラメータと自動更新で同様の問題を解決することができました。

URLパラメータから値を取得し、必要に応じてそれを実行して、単にページを更新することができます。

HTML:

<a href=\"webpage.aspx?parameterName=parameterValue"> LinkText </a>

C#:

string variable = Request.QueryString["parameterName"];
if (parameterName!= null)
{
   Session["sessionVariable"] += parameterName;
   Response.AddHeader("REFRESH", "1;URL=webpage.aspx");
}
0
Rui Ruivo

ページ作成後にサーバーからセッションデータを変更するには、AJAX、さらにはJQueryを使用してジョブを完了させる必要があります。どちらもサーバーに接続してセッションデータを変更し、その接続から返されたデータを取得できます。

<?php
session_start();
$_SESSION['usedData'] = "Some Value"; //setting for now since it doesn't exist
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Modifying PHP Session Data</title>
        <script type='text/javascript'>
            var usedData = '<?php echo $_SESSION['usedData']; ?>';
            var oldDataValue = null;

            /* If function used, sends new data from input field to the
               server, then gets response from server if any. */

            function modifySession () {
                var newValue = document.getElementById("newValueData").value;

                /* You could always check the newValue here before making
                   the request so you know if its set or needs filtered. */

                var xhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

                xhttp.onreadystatechange = function () {
                    if (this.readyState == 4 && this.status == 200) {
                        oldDataValue = usedData;
                        usedData = this.responseText; //response from php script
                        document.getElementById("sessionValue").innerHTML = usedData;
                        document.getElementById("sessionOldValue").innerHTML = oldDataValue;
                    }
                };

            xhttp.open("GET", "modifySession.php?newData="+newValue, true);
            xhttp.send(); 
            }
        </script>
    </head>
    <body>
        <h1><p>Modify Session</p></h1>

        Current Value: <div id='sessionValue' style='display:inline'><?php echo $_SESSION['usedData']; ?></div><br/>
        Old Value: <div id='sessionOldValue' style='display:inline'><?php echo $_SESSION['usedData']; ?></div><br/>

        New Value: <input type='text' id='newValueData' /><br/>
        <button onClick='modifySession()'>Change Value</button>
   </body>
</html>

今度は、セッションデータを変更し、必要に応じてデータをポストバックするために、modifySession.phpという小さなphpスクリプトを作成する必要があります。

<?php
session_start();
$_SESSION['usedData'] = $_GET['newData']; //filter if necessary
echo $_SESSION['usedData']; // Post results back if necessary
?>

これにより、PHP/AJAXを使用してサーバー側でセッションを変更することで、目的の結果が得られるはずです。

0
shader2199

私はセッションに必須を置くために私の.phpファイルを使用しました

$ _SESSION ['name'] = $ phparray ["name"]; $ ajaxoutput ['name'] = $ phparray ["name"];

私の.jsファイルに

sessionStorage.setItem( "name"、ajaxreturnedarray ["name"]);

そして私はこれを使用してこれを取得

var myName = sessionStorage.getItem( "name");

他の.jsファイル内または同じ.jsファイル内

それをそのままにしておけば、ログアウトしても常に同じ結果に戻ります。だからログアウトしながら私は作った

sessionStorage.setItem( "name"、 "");

これを使ってローカル変数を空にしました。私は単一ページのウェブサイトログイン/ログアウトセッションでこのプロセスを使いました。それが私のために働いたので私はこの方法があなたのために働くことを願っています。 plzはあなたの経験を教えてください。

0
Srinivasa Reddy

これはカンニングですが、あなたはこれを行うことができます、パラメータとしてサーバー側に値を送​​信

<script>
var myVar = "hello"
window.location.href = window.location.href.replace(/[\?#].*|$/, "?param=" + myVar); //Send the variable to the server side
</script>

そしてサーバーサイドから、パラメータを取得します

string myVar = Request.QueryString["param"];
Session["SessionName"] = myVar;

お役に立てれば

0
KMR