我可以使用以下方式将 session 变量存储在 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 中检索 session 值(即不分配给隐藏变量)
最佳答案
如果您的意思是“客户端 Java 脚本”,那么您不能,至少不能直接使用。 session 数据存储在服务器上,客户端在不与服务器通信的情况下看不到它。
要访问它可以发出 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 - 如何将 session 值从 aspx(使用 javascript 存储)传递到 cs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32241185/