使用 Javascript 或 jQuery 检索会话变量的简单快捷的方法
simple and fast ways to retrieve session variables using Javascript or jQuery?
我是使用jQuery和/或Javascript进行Web UI开发的新手。 我必须将其用作项目的一部分,但我不是专家。
我真的非常感谢比我更了解这个领域的人的洞察力。
我的要求
我在更新面板内的页面上有一个按钮。
当从 jQuery/Javascript 函数以编程方式单击按钮时,我需要在 ASP.Net Web 应用程序代码隐藏中的变量中设置一个值。
然后,我需要将这个更改后的变量从隐藏的代码传递回页面。 此变量的值将确定另一个 jQuery/Javascript 函数在进一步的用户操作中的行为方式。
我无法使用隐藏字段,因为它们正在通过面板的OnUnload
方法在更新面板中重置。
我的问题
如果我在更新面板内的按钮单击后将其填充到后面的代码中,是否有一种简单快捷的方法让此更新面板之外的 jQuery/Javascript 函数从会话中检索变量? 这可能吗?
我的用户界面代码
<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。这将响应请求会话变量值的特定 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"参数中传递的任何内容,尝试检索该名称的会话变量并将其值作为字符串返回:-
[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);
}
若要对此进行测试,请键入已知应用中存在的会话变量的名称;处理程序应返回该变量,回调函数会将内容写入 txtResponse。
对不起,如果这是一个很长的例子;如果您需要更多帮助,请告诉我。
我会使用jQuery AJAX和HttpHandler。确保使 HttpHandler 实现 IRequiresSessionState 以便访问当前会话。
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate(v=vs.110).aspx
我会使用 Newtonsoft.Json,而不是标准的 Microsoft lib,来转换 JSON。
- JQuery:向多个匹配结果添加换行符的最简单方法
- 访问对象的最简单方法'的单独财产
- 检查变量是否为字符串的简单方法
- 创建jQuery Slider的简单方法
- 你知道使用javascript游戏引擎的简单方法吗
- 解释分号的简单方法
- JavaScript:检查变量是否等于两个或多个值之一的简单方法
- 什么'这是使用jQuery将一些文本锚定到外部链接的最简单方法
- 实施会员系统的最简单方法是什么
- 每次使用 Javascript 加载页面时增加一个数字(变量)的简单方法
- .attr(“href”) 的问题!解决此问题的简单方法
- 出错时更改文本字段边框的最简单方法
- JavaScript:获取第一个月前 6 个月的日期的最简单方法
- 检查 redux 状态是否更改的简单方法
- 在CreateJS中加载视频的最简单方法
- 使用JavaScript过滤从网页复制的文本的最简单方法
- 创建在Javascript和PHP之间使用的唯一代码的最简单方法
- 什么's是处理多个js文件之间交互的简单方法,同时避免溢出全局变量
- 使用JS找出字符串中字符重复的最简单方法是什么
- 什么'这是一种基于if/if-else语句显示popover的简单方法