gpt4 book ai didi

javascript - 使用 Javascript 或 jQuery 检索 session 变量的简单快速的方法?

转载 作者:行者123 更新时间:2023-11-28 08:39:30 25 4
gpt4 key购买 nike

我是使用 jQuery 和/或 Javascript 进行 Web UI 开发的新手。我必须将它用作我的项目的一部分,但我不是专家。

我真的非常非常感谢比我更了解这个领域的人的见解。

我的要求

我在更新面板内的页面上有一个按钮。

当从 jQuery/Javascript 函数以编程方式单击按钮时,我需要在 ASP.Net Web 应用程序的代码隐藏中的变量中设置一个值

然后我需要将这个更改后的变量从后面的代码传递回页面。该变量的值将决定另一个 jQuery/Javascript 函数对进一步的用户操作的行为方式。

我无法使用隐藏字段,因为它们通过面板的 OnUnload 方法在更新面板内重置。

我的问题

如果我将其填充到后面的代码中,是否有一种简单快速的方法可以让 jQuery/Javascript 函数在此更新面板之外从 session 中检索变量单击更新面板内的按钮?这可能吗?

我的用户界面代码

<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnUnload="UpdatePanel_Unload">
<ContentTemplate>

<asp:Button ID="btnSendMeTheField" runat="server" style="visibility: hidden; display: none;" OnClick="btnSendMeTheField_Click"/>

</ContentTemplate>
</asp:UpdatePanel>

处理数据并发回变量的服务器代码

Protected Sub btnSendMeTheField_Click(sender As Object, e As EventArgs) Handles btnSendMeTheField.Click
Dim parsedObjectId As String = ""
parsedObjectId = "1000"
Session("objectId") = parsedObjectId
End Sub

最佳答案

好的,一个例子 - 改编自现有项目。为了保护无辜者,名字已被更改:)

首先是 HttpHandler。这响应请求 session 变量值的特定 jQuery AJAX 请求。当它返回 JSON 时,创建一个简单的对象来返回结果(返回类型当然可以根据需要复杂程度):-

(再次抱歉,这是 C# 而不是 VB.NET;我已尽力使其简单明了)

[Serializable]
public class ResponseItem
{
public string SessionVariable { get; set; }

public ResponseItem(string sessionVariable)
{
this.SessionVariable = sessionVariable;
}
}

为了简单起见,请将 HttpHandler 添加到您的 Web 项目中。您应该下载最新版本的 Newtonsoft.Json 并首先添加对其的引用。该处理程序只需获取请求“sessionVariableName”参数中传递的任何内容,尝试检索该名称的 session 变量并将其值作为字符串返回:-

[WebService(Namespace = "http : / /  namespace not important for your test")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
public bool IsReusable { get { return false; } }

public void ProcessRequest(HttpContext context)
{
string json = string.Empty;

try
{
if (!string.IsNullOrEmpty(context.Request["sessionVariableName"]))
{
string sessionVariableName = context.Request["sessionVariableName"];

if (context.Session[sessionVariableName] != null)
{
var response = new ResponseItem(context.Session[sessionVariableName].ToString());
json = Newtonsoft.Json.JsonConvert.SerializeObject(response);
}
}
}
catch (Exception ex)
{
// you might want to create an "Error" type to return as JSON here
}

context.Response.Write(json);
}
}

您需要在 web.config 中注册您的处理程序;我假设您使用的是 IIS7 或更高版本:-

  <system.webServer>
.
.
.
<handlers>
<!-- Custom HTTP handlers -->
<add name="Handler" preCondition="integratedMode" verb="*" path="Handler.ashx" type="YourProject.YourNamespace.Handler, YourProject" />

最后是前端。一个简单的测试表格:-

<div>
<asp:TextBox ID="txtSessionVariableName" runat="server" ClientIDMode="Static" />
<asp:TextBox ID="txtResponse" runat="server" ClientIDMode="Static" />
<input type="button" value="click me" onclick="javascript::CallHandler()" />
</div>

调用处理程序的方法:-

function CallHandler()
{
$.getJSON("Handler.ashx",
{
"sessionVariableName": $("#txtSessionVariableName").val()
},
handleResult);
}

处理结果的回调方法:-

function handleResult(result)
{
var sessionItem = eval(result);
$("#txtResponse").text(sessionItem.SessionVariable);
}

要对此进行测试,请键入您知道应用程序中存在的 session 变量的名称;处理程序应该返回它,回调函数会将内容写入 txtResponse。

抱歉,这个例子有点长;如果您需要更多帮助,请告诉我。

关于javascript - 使用 Javascript 或 jQuery 检索 session 变量的简单快速的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669904/

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