请德才兼备的高手们指教!

luoshi 2008-08-25 01:33:57
JavaScript如何操作ASP.NET之Session?
可不要误人子弟哦!
...全文
212 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoshi 2008-08-26
  • 打赏
  • 举报
回复
26楼的兄弟对三国还是挺熟的吗,可惜张昭和周瑜都没能给我令人眼前一亮的解决方案。

或者说Session只能在服务器端操作,我也不建议在客户端操作Seesion,但是现在是就事论事,我觉得在客户端用JavaScript来操作Session是完全可以的。冒天下之大不韪,说出了这样的结论,真有点后怕。

继续顶!!
SeeSunSet 2008-08-26
  • 打赏
  • 举报
回复
用AJAX把SESSION的值返回来.也可以推回去.不过这种用法有点变态.你不如直接用COOKIE..至少JSP可以操作COOKIE
但如果你SESSION存的是其它对象,则无能为力了.
「已注销」 2008-08-25
  • 打赏
  • 举报
回复
[Quote=引用 -1 楼 高手 的回复:]

内事不决问baidu,外事不决问google

}
[/Quote]
bhtfg538 2008-08-25
  • 打赏
  • 举报
回复
xmlhttp.send(....?sessionname="str")



.cs

str=Request.QueryString("str")
if(str!=null)
{
response.write(Session[str]);
}

bhtfg538 2008-08-25
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 luoshi 的回复:]
很感谢sikezx,我觉得您的方法,太过于复杂了,而且不利于我的解决方案。我的应用是在采用了多线程作为后台运行,前台采用ASP.NET AJAX UpdatePanel and Timer定期垂询多线程运行结果,然后反映到客户端。

但是,我觉得没有必要同时采用两种Ajax框架来实现这样一个小小的功能。
很感谢您的热情!
希望大家继续发表自己的想法,帮助我实现的针对JavaScript读取Session的系统解决方案。实现所有高手认为不可能实现之功能,…
[/Quote]

JavaScript操作session 百度 google 嗖嗖 狗狗 雅虎 msdn 一下
Feiin 2008-08-25
  • 打赏
  • 举报
回复
不会..
帮顶。。。
紫气东来_999 2008-08-25
  • 打赏
  • 举报
回复
js 操作 SESSION 绝对不是好的解决方案
Catmaoo 2008-08-25
  • 打赏
  • 举报
回复
javascrpt 操作 session ,dangerous!
luoshi 2008-08-25
  • 打赏
  • 举报
回复
发表于:2008-08-25 15:06:5318楼 得分:0
无德无才,不敢误人子弟。


之所以我加上了“可不要误人子弟哦!”
当时也是思量再三,一是定位这个帖子的出发点,二希望看到真正的高手不贪图虚名的情怀。
无德无才不是借口,树欲静而风不止,不是做技术应有的德才,无德无才可以学习,无德无才可以贡献您顶的力量。

再次感谢上面的那位兄弟!
luoshi 2008-08-25
  • 打赏
  • 举报
回复
很感谢sikezx,我觉得您的方法,太过于复杂了,而且不利于我的解决方案。我的应用是在采用了多线程作为后台运行,前台采用ASP.NET AJAX UpdatePanel and Timer定期垂询多线程运行结果,然后反映到客户端。

但是,我觉得没有必要同时采用两种Ajax框架来实现这样一个小小的功能。
很感谢您的热情!
希望大家继续发表自己的想法,帮助我实现的针对JavaScript读取Session的系统解决方案。实现所有高手认为不可能实现之功能,是人生的一大乐趣,希望各位高手不要保留,我一直认为只要有恒心,我们一定会实现不能实现之可能。
再次感谢上面的各位的诚意。
wuyi8808 2008-08-25
  • 打赏
  • 举报
回复
无德无才,不敢误人子弟。
luoshi 2008-08-25
  • 打赏
  • 举报
回复
我刚回到座位,这种方法不好,还不如在服务器端将Session读取到页面的一个隐藏元素,然后再用JavaScript来读取。
我觉得shoushii兄弟的方法不可取,因为在6年前,我已经思考过这种方法了。

希望大家继续发表自己的想法,帮助我实现的针对JavaScript读取Session的系统解决方案
shoushii 2008-08-25
  • 打赏
  • 举报
回复
看来LZ很着急啊。
可以只读Session,用JS返回后台的结果,如果说操作的话,那太危险了。
读取Session
后台

//序列化Session信息
string strSession = "序列化后的Session对象";


前台

eval("Session=",<%=strSession %>);
//调用
Session.UserName
luoshi 2008-08-25
  • 打赏
  • 举报
回复
我觉得这应该有一个系统的解决方案。
我在2002年的时候,曾经就遇到了这个问题,但是当时我仅仅是采用了替代的方法。
今天,我在完成一个WorkBench工作台的时候,采用了多线程作为后台运行,前台采用ASP.NET AJAX UpdatePanel and Timer定期垂询多线程运行结果,然后反映到客户端。

期待高手们不要对我抛砖引玉,希望您们在帮助我的同时也帮助以后看到这个帖子的兄弟姐妹们,谢谢各位高手,谢谢各位兄弟姐妹,再次谢谢准备要骂我的兄弟请您们“嘴下留情”!
sikezx 2008-08-25
  • 打赏
  • 举报
回复
用这个吧!
1 在web.config中的<system.web>节点中添加:



<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>

2 后台代码(本来想直接写在页面上,后来想,还是保持住良好的习惯吧,我忍了)


private void Page_Load(object sender, System.EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(WebForm1));
}

[AjaxPro.AjaxMethod()]
public string TestMehtod(string name)
{
return this.BuildMessage(name);
}

protected string BuildMessage(string name)
{
return string.Format("Hello {0}!Welcome to AjaxPro's world.",name);
}

3 前台代码


<%@ Page language="c#" Codebehind="SampleBase.aspx.cs" AutoEventWireup="false" Inherits="AjaxProSample.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>
<head>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<script language = "javascript" type = "text/javascript">

function TestFunction()
{
var serverMessage = AjaxProSample.WebForm1.TestMehtod('jxh');
return serverMessage.value;
}

</script>
</head>
<body>
<form id="Form1" method="post" runat="server"></form>

<script language = "javascript">
document.write(TestFunction());
</script>

</body>
</html>

但有2点需要注意
1 关于Session,如果想在AjaxMethod中使用Session的话,那么AjaxMethod标签必须带AjaxPro.HttpSessionStateRequirement.ReadWrite参数




[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string CheckPassword()
{}


2 关于属性,我们注册了一个属性,运行之后,在客户端JS中的确就可以访问了
[AjaxPro.AjaxProperty()]
public string UserName
{
set
{
Session["UserName"] = value;
}

get
{
return Session["UserName"].ToString();
}
}
AjaxProSample.SampleSession.UserName = document.getElementById("txtUserName").value;
alert(AjaxProSample.SampleSession.UserName);
但此时如果在服务器端代码中企图使用的话,就会出现空引用异常,如果非要在客户段和服务器端同时使用这个属性的话,请增加一个设置值的方法。例如:
[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public void SetValue(string value)
{
UserName = value;
}
AjaxProSample.SampleSession.UserName = document.getElementById("TextBox1").value;
AjaxProSample.SampleSession.SetValue(AjaxProSample.SampleSession.UserName);
jianojian 2008-08-25
  • 打赏
  • 举报
回复
推荐一个简单的工具 ajaxpro.dll,自己下载一个.
jianojian 2008-08-25
  • 打赏
  • 举报
回复
用javascript ajax 调用后台方法.有这个必要吗?
luoshi 2008-08-25
  • 打赏
  • 举报
回复
但是,我在很多的网站上都有看到,诸如用JavaScript操作Session 的例子,但是我测试怎么也通不过!
有那位高手能给我彻彻底底地说明一下,为什么Javascript不可以实现访问服务器端的Seesion吗?
sikezx 2008-08-25
  • 打赏
  • 举报
回复
无法操作session
document.cookie
kkai189 2008-08-25
  • 打赏
  • 举报
回复
如果给js加上runat=server是不是可以操作session不得而知
加载更多回复(8)

62,042

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧