如何访问会话变量并在javascript中设置它们?

如何访问会话变量并在javascript中设置它们?,javascript,.net,session,Javascript,.net,Session,在代码隐藏中,我使用一些数据设置了会话 Session["usedData"] = "sample data"; 问题是如何在javascript中获取会话值(在我的示例中为“示例数据”),并使用新值设置Session[“usedData”]?试试这个 var sessionValue = '<%=Session["usedData"]%>' var sessionValue='' 您不能直接在JavaScript中访问会话 您可以创建一个隐藏字段并将其传递到页面,然后使用Jav

在代码隐藏中,我使用一些数据设置了会话

Session["usedData"] = "sample data";
问题是如何在javascript中获取会话值(在我的示例中为“示例数据”),并使用新值设置
Session[“usedData”]

试试这个

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

您不能直接在JavaScript中访问
会话


您可以创建一个隐藏字段并将其传递到页面,然后使用JavaScript通过
文档检索对象。getElementById

为代码隐藏文件中的隐藏字段赋值。像普通HTML控件一样在javascript中访问此值。

假设您指的是“客户端javascript”,那么您不能,至少不能直接访问

会话数据存储在服务器上,因此客户端代码在不与服务器通信的情况下无法看到它


要访问它,您必须发出HTTP请求,并让服务器端程序修改/读取和返回数据。

使用Javascript访问和分配会话变量:

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

        var username = '<%= Session["UserName"] %>';
        alert(username );
    }
</script>
使用Javascript分配ASP.NET会话变量:

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

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

函数SetUserName()
{
var userName=“Shekhar Shete”;
'';
警报(“”);
}
使用Javascript访问ASP.NET会话变量:

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

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

函数GetUserName()
{
var用户名=“”;
警报(用户名);
}

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()
     } );
   });

 });
用于获取会话值,如Shekhar和Rajeev所说

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

希望这能有所帮助。

我一直在寻找这个问题的解决方案,直到找到一个非常简单的访问会话变量的解决方案,假设您在服务器端使用.php文件。希望它能回答部分问题:

访问会话值

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

这应该可以工作,但没有测试它。

您也可以在属性中设置变量并从js调用它:

在服务器端:

Protected ReadOnly Property wasFieldEditedStatus() As Boolean
    Get
        Return If((wasFieldEdited), "true", "false")
    End Get
End Property
然后在javascript中:

alert("The wasFieldEdited Value: <%= wasFieldEditedStatus %>" );
alert(“wasfield编辑值:”);

您不能从
Javascript
设置会话端会话变量。如果您想这样做,您需要创建一个
AJAX
POST来在服务器上更新此内容,尽管如果选择一辆车是一个重大事件,发布此内容可能更容易。

首先在代码隐藏中创建一个方法来设置会话:

 [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>

这是一个欺骗,但您可以这样做,将值作为参数发送到服务器端

<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;

如果您想在javascript中读取会话值,希望这对您有所帮助。这段代码对您有帮助


var userID='@Session[“userID]”;

我使用我的.php文件将所需内容放入会话中

$_SESSION['name']=$phparray[“name”]$ajaxoutput['name']=$phparray[“name”]

在我的.js文件中,我使用了

setItem(“name”,ajaxreturnedarray[“name”])

我用计算机检索到了这个

var myName=sessionStorage.getItem(“名称”)

在其他.js文件或相同的.js文件中

如果我保持原样,它将始终返回原样,即使是你。所以当我注销的时候

setItem(“名称”,“名称”)


使用这个函数,我清空了局部变量。我在单页网站登录/注销会话中使用了此过程。我希望这种方式对你有用,因为它对我有用。请告诉我你的经历

要在页面创建后修改服务器上的会话数据,需要使用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>
”;
var oldDataValue=null;
/*如果使用函数,则将新数据从输入字段发送到
服务器,然后从服务器获取响应(如果有)*/
函数modifySession(){
var newValue=document.getElementById(“newValueData”).value;
/*在创建之前,您始终可以在此处检查新值
请求,以便您知道其设置或是否需要过滤*/
var xhttp=window.XMLHttpRequest?new-XMLHttpRequest():new-ActiveXObject(“Microsoft.XMLHTTP”);
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
oldDataValue=usedData;
usedData=this.responseText;//来自php脚本的响应
document.getElementById(“sessionValue”).innerHTML=usedData;
document.getElementById(“sessionOldValue”).innerHTML=oldDataValue;
}
};
open(“GET”、“modifySession.php?newData=“+newValue,true”);
xhttp.send();
}
修改会话

当前值:
旧值:
新值:
更改值
现在,我们需要制作一个名为modifySession.php的小php脚本来更改会话数据,并在必要时将数据发回

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


通过使用PHP/AJAX通过服务器端修改会话,这应该可以达到您想要的结果。

我能够通过简单的URL参数和自动刷新解决类似的问题

您可以从URL参数中获取值,对它们执行任何操作,只需刷新页面即可

HTML:


这是对我有用的东西。 Javascript有这样的功能

<script type="text/javascript">
var deptname = '';
</script>
将此代码添加到按钮,单击以确认deptname已更改

alert(deptname);

var myfirstdata=“”;

这种方法可能需要一些里程。 这似乎使日期回到了一个会话
        String csname1 = "LoadScript";
        Type cstype = p.GetType();

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = p.ClientScript;

        // Check to see if the startup script is already registered.
        if (!cs.IsStartupScriptRegistered(cstype, csname1))
        {
            String cstext1 = funct;
            cs.RegisterStartupScript(cstype, csname1, "deptname = 'accounting'", true);
        }
        else
        {
            String cstext = funct;
            cs.RegisterClientScriptBlock(cstype, csname1, "deptname ='accounting'",true);
        }
alert(deptname);
<?php
    session_start();
    $_SESSION['mydata']="some text";
?>

<script>
    var myfirstdata="<?php echo $_SESSION['mydata'];?>";
</script>
ob_start();
?>
<script type="text/javascript">
    var d = new Date();
    document.write(d);
</script>
<?
$_SESSION["date"]  = ob_get_contents();
ob_end_clean();
echo $_SESSION["date"]; // displays the date
echo substr($_SESSION["date"],28); 
// displays 'script"> var d = new Date(); document.write(d);'