在后台代码中,我设置Session
了一些数据。
Session["usedData"] = "sample data";
问题是如何在javascript中获取会话值(在我的示例中为“示例数据”)并设置Session["usedData"]
一个新值?
在后台代码中,我设置Session
了一些数据。
Session["usedData"] = "sample data";
问题是如何在javascript中获取会话值(在我的示例中为“示例数据”)并设置Session["usedData"]
一个新值?
Answers:
使用Java脚本访问和分配会话变量:
使用Javascript分配ASP.NET会话变量:
<script type="text/javascript">
function SetUserName()
{
var userName = "Shekhar Shete";
'<%Session["UserName"] = "' + userName + '"; %>';
alert('<%=Session["UserName"] %>');
}
</script>
使用Javascript访问ASP.NET Session变量:
<script type="text/javascript">
function GetUserName()
{
var username = '<%= Session["UserName"] %>';
alert(username );
}
</script>
+ userName +
您不能Session
直接在JavaScript中访问。
您可以创建一个隐藏字段并将其传递到页面,然后使用JavaScript通过以下方式检索对象 document.getElementById
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"] ?? "" %>';
希望这可以帮助。
试试这个
var sessionValue = '<%=Session["usedData"]%>'
假设您的意思是“客户端JavaScript”-那么您至少不能直接这样做。
会话数据存储在服务器上,因此如果不与服务器进行通信,客户端代码将看不到它。
要访问它,您必须发出HTTP请求并让服务器端程序修改/读取并返回数据。
您无法从中设置会话端会话变量Javascript
。如果要做到这一点,你需要创建一个AJAX
POST到上更新该服务器但如果汽车的选择是一个重大的事件很可能就是更容易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>
如果要读取javascript中的会话值。此代码对您有帮助。
<script type='text/javascript'>
var userID='@Session["userID"]';
</script>
我一直在寻找解决此问题的方法,直到找到一个非常简单的访问会话变量的方法,并假设您在服务器端使用了.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;
这应该工作,但不进行测试。
这是一个作弊,但是您可以执行此操作,将该值作为参数发送到服务器端
<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具有此功能。
<script type="text/javascript">
var deptname = '';
</script>
后面的C#代码具有此功能-可以将其放在母版页上,以便在每次页面更改时重置var。
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);
}
将此代码添加到单击按钮以确认deptname更改。
alert(deptname);
我用我的.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”,“”);
使用此我清空局部变量。我在单页网站登录/注销会话中使用了此过程。我希望这种方式对您有用,因为它对我有用。请告诉我您的经历。
要在页面创建后从服务器修改会话数据,您将需要使用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通过服务器端修改会话,可以达到所需的结果。
我可以通过简单的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");
}
<?php
session_start();
$_SESSION['mydata']="some text";
?>
<script>
var myfirstdata="<?php echo $_SESSION['mydata'];?>";
</script>