gpt4 book ai didi

ASP.NET AJAX 和 session 变量

转载 作者:行者123 更新时间:2023-12-03 03:32:46 25 4
gpt4 key购买 nike

我有一个 ASP.NET (VB.NET) 应用程序,有 2 个页面,一个“主”页面和第二个“仅数据”页面,其唯一目的是成为主页的 AJAX 数据目标,从而使数据库调用并呈现 jQuery (AJAX) .get() 的结果。我在主页中使用一个 session 变量,我想在进行数据库调用并呈现数据之前测试该变量在纯数据页面中是否存在。

我尝试过直接执行此操作,但失败了。从到目前为止我所能确定的情况来看,纯数据页面无法检测 session 变量,直到其 session 正式启动(显然,以某种方式使用 session_start)。如果这是正确的,当仅通过主页上的 AJAX 调用访问纯数据页面时,如何在仅数据页面中启动 session ?我绝对需要纯数据页面能够感知 session 变量。谢谢!

--瑞克

这两个页​​面都是 ASP.NET。我在主页上添加了一个标签,以验证(在 page_load 和提交 session 值时) session 变量是否存在以及它是什么。如果 data_only 页面检测到 session 变量的存在,则会返回是或否消息(始终为否)。

页面代码 - main.aspx:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="main.aspx.vb" Inherits="main" %>

<!DOCTYPE html>

<html>
<head runat="server">
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="txt_1" runat="server"></asp:TextBox>
<asp:Button ID="but_1" runat="server" Text="Add Session Variable" /><br />
<asp:Label ID="lbl_1" runat="server"></asp:Label><br /><br />
<asp:Button ID="but_2" runat="server" Text="Get Data" />
<asp:Label ID="lbl_2" runat="server"></asp:Label>
</form>
<script type="text/javascript">
$(document).ready(function () {
$('#but_2').on('click', function (event) {
event.preventDefault();
$.get("data_only.aspx", function (data) {
$('#lbl_2').text(data);
});
});
});
</script>
</body>
</html>

代码隐藏 - main.aspx:

Partial Class main
Inherits System.Web.UI.Page

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Call Check_Session()
End Sub

Protected Sub but_1_Click(sender As Object, e As System.EventArgs) Handles but_1.Click
Session("var1") = txt_1.Text
Call Check_Session()
End Sub

Private Sub Check_Session()
Dim strSession = Session("var1")
If strSession Is Nothing Then
lbl_1.Text = "No Session variable."
Else
lbl_1.Text = "Session Variable = " & strSession
End If
End Sub
End Class

页面代码 - data_only.aspx:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="data_only.aspx.vb" Inherits="data_only" %>

<!DOCTYPE html>

<html>
<head runat="server">
<title></title>
</head>
<body></body>
</html>

代码隐藏 - data_only.aspx:

Partial Class data_only
Inherits System.Web.UI.Page

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim strSession = Session("var1")
If strSession Is Nothing Then
Response.Write("No session variable.")
Else
' Database call occurs here
Response.Write("Success! Get data here.")
End If
Response.End()
End Sub
End Class

最佳答案

也许您可以尝试对两个页面使用“主类”,即两个页面都继承自具有所有 session 处理逻辑的主类(又继承自 System.Web.UI.Page)。

关于ASP.NET AJAX 和 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com