我使用的是asp.net、vb.net和jquery。我需要看看我的会话是否存在于jQuery中。我知道我不能在jQuery中处理会话,因为JavaScript是客户端,而会话是服务器端。所以,我认为一个变通办法可以是将会话信息存储在标签中。
以下是我正在尝试的不太有效的东西:
因此,在Page_Load上,我将文本框设置为session(当会话存在时,它等于"True"(:LblSession.Text = Session("MySession")
同样在Page_Load上,如果会话过期(设置为15分钟(,那么我希望更新会话的标签为null/false。
If Not Session("MySession") Then LblSession.Text = Session("MySession")
但是,当我的会话结束时,此标签不会更新为会话是否存在。
在我的jQuery上,我得到了会话的值(如果它存在,则为True,否则为false或null(:var mySession = $("#LblSession").text();
//Check to see if the session is true
if (mySession == "True") {
'do something if session exists'
} else {
'do something if session does not exist'
}
这是我的最终目标,能够查看会话是否存在,或者它是否从我的jQuery中过期。
您对ID html标记的Javascript调用可能是错误的,请检查ID控件是否存在:
<asp:Label runat="server" ID="LblSession"></asp:Label>
// render as:
<span id="[if inside Masterpage ex. ContentMain_]LblSession"></span>
$("#LblSession").text();
检查web.config的配置,标记clientIDMode的值,ID取决于此设置和页面结构,例如,如果您有母版页和容器控件。检查html生成的代码,以获得渲染的html控件的客户端ID标记。
<pages clientIDMode="Predictable"></pages>
更多信息:(https://learn.microsoft.com/en-us/dotnet/api/system.web.ui.control.clientidmode?view=netframework-4.8(
最好使用隐藏字段,将其渲染为隐藏输入:(https://learn.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.hiddenfield?view=netframework-4.8(
<asp:HiddenField id="HiddenField1" runat="server" value="1"/>