我有一个img按钮。单击它时,我使用jquery设置了会话值。但是我无法获得有关vb代码的会话。我的过程类似于用户单击图像后,设置会话。当用户打开弹出页面并返回页面时。我需要检查会话以执行某些操作。但是在vb代码中,会话没有任何作用。有人可以告诉我怎么做吗。
下面的代码调用该函数:
<asp:Image ID="img" runat="server" onclick="SetSession(hdID);" ImageUrl="pic_bottle.gif" />
jquery脚本:
function SetSession(hdID) {
var hd = $('#' + hdID);
var hdValue = hd.val();
if (hdValue == "s") {
$.session.set('UpdateProdOrder', -1);
}
else {
var hdProdID = $('#hdProdID').val();
$.session.set("UpdateProdOrder", hdProdID);
}
alert($.session.get("UpdateProdOrder"));
}
后面的vb代码永远不会获得会话
If Not Session("UpdateProdOrder") Is Nothing Then
'do something
updateOrder()
end if
答案 0 :(得分:0)
localStorage和sessionStorage属性允许在Web浏览器中保存键/值对。
sessionStorage对象仅存储一个会话的数据(关闭浏览器选项卡时,该数据将被删除)。
这些值在客户端维护,但是您尝试在服务器端检索它。会话变量是服务器端的
解决方案:
方法1 :
您必须有一个ajax调用才能与服务器对话以进行设置。 please check it out
方法2 :
使用Javascrip分配ASP.NET会话变量 t。
<script type="text/javascript">
function SetSession(hdID)
{
var hd = $('#' + hdID);
var hdValue = hd.val();
if (hdValue == "s") {
'<%Session["UpdateProdOrder"] = "' + -1+ '"; %>';
}
else {
var hdProdID = $('#hdProdID').val();
'<%Session["UpdateProdOrder"] = "' + hdProdID+ '"; %>';
}
alert('<%=Session["UpdateProdOrder"] %>');
}
</script>
使用Javascript访问ASP.NET会话变量:
<script type="text/javascript">
function GetSession()
{
var updateProdOrder= '<%= Session["UpdateProdOrder"] %>';
alert(updateProdOrder);
}
</script>
答案 1 :(得分:0)
您不能直接使用javascript更改服务器端Session
对象。您需要以某种方式将其发送到服务器。这可以通过将图像更改为ImageButton
并执行PostBack来修改Session对象来完成。但是由于您似乎在hdID
中有一些数据。您不能仅通过ImageButton将其发送到服务器,而是需要HiddenField
<asp:ImageButton ID="ImageButton1" runat="server" OnClientClick="SetSession(hdID);"
ImageUrl="pic_bottle.gif" OnClick="ImageButton1_Click" />
<asp:HiddenField ID="HiddenField1" runat="server" />
<script type="text/javascript">
var hdID = 'test';
function SetSession(hdID) {
$('#<%= HiddenField1.ClientID %>').val(hdID);
}
</script>
然后在
后面的代码中protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Session["UpdateProdOrder"] = HiddenField1.Value;
Label1.Text = string.Format("Session value is now '{0}'", Session["UpdateProdOrder"]);
}
您也可以在没有JavaScript SetSession
的情况下执行此操作,但这取决于在页面的其他部分使用hdID
的时间和地点。