![](/img/trans.png)
[英]How to retrieve a session value from Javascript in another aspx.cs page?
[英]How to pass session value from aspx (stored using javascript) to cs
我可以使用以下方式将会话变量存储在aspx页面中:
$(document).ready(function () {
var userName = "webruster";
'<%Session["UserName"] = "' + userName + '"; %>';
alert('<%=Session["UserName"]%>');
});
现在,当我尝试检索Session["UserName"]
时,无法在CS中获取该值。 为此,我有一个解决方法,但想知道它失败的原因吗?
替代方式:
声明隐藏的变量和链接按钮
$(document).ready(function () {
var userName = "webruster";
'<%Session["UserName"] = "' + userName + '"; %>';
var x = document.getElementById("<%=hdnsessionvalue.ClientID %>");
x.value = '<%=Session["UserName"] %>';
document.getElementById('<%= lnkButton1.ClientID %>').click();
});
因此,我能够在服务器端的onclick
事件中检索值。
我的问题:那么,为什么我无法使用第一种方法在CS中检索会话值(即,没有分配给隐藏变量)
如果您的意思是“客户端Java脚本”,那么您至少不能直接这样做。 会话数据存储在服务器上,并且如果不与服务器通信,客户端将看不到会话数据。
要访问它,可以发出HTTP请求,并让服务器端修改或返回数据。
更新
例
<script>
// get the variable
var data = JSON.Stringify(yourVariable);
// Make the ajax call
$.ajax({
type: "POST",
url: "aspPage.aspx/Method", //method we will call
contentType: "application/json; charset=utf-8",
data: {value: data }, //assign the 'data' values to 'value', its the data you want to send
dataType: "json",
success: function (result) {
alert('its working');
},
error: function (result) {
alert('something wrong');
}
});
</script>
在aspPage.aspx上
[WebMethod]
public static void Method(string value)
{
sting val = value; // Do whatever you want to
}
您不能直接通过javascript设置或使用会话,因为它是服务器端状态管理技术。 为此,您应该使用“隐藏字段”。
将javascript变量设置为Hidden Field,然后在后面的代码中,获取Hidden Field值,并将其设置为所需的Session。
您可以通过以下方法实现它:
Java脚本
$(document).ready(function () {
var userName = "webruster";
var x = document.getElementById("<%=hdnsessionvalue.ClientID %>");
x.value = userName;
document.getElementById('<%= lnkButton1.ClientID %>').click();
});
背后的代码(CS)
protected void lnkButton1_Click(object sender, EventArgs e)
{
string test = hdnsessionvalue.Value;
Session["UserName"] = test ;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.