日期:2014-05-16  浏览次数:20729 次

关于[AjaxPro.AjaxMethod]访问Page类中数据的问题
本帖最后由 runningsword 于 2013-05-07 15:53:59 编辑
各位大虾,由于刚接触web,现有如下3个问题想请教,请大家帮忙解惑下吧,非常感谢~

问题1. 当多个客户端访问并打开一个Page后,服务端是否会建立多个独立的同属page类的实例?
问题2. 是否只有page类中的static成员才是共享数据?而其它成员为客户端私有数据?
问题3. 当客户端调用[AjaxPro.AjaxMethod]的方法,而此方法要用客户端的私有数据,
       但对客户端本身是全局性质的,我该如何定义这种变量?
       也就是说如何建立客户端私有的,但有static性质的数据成员?

本质问题:发现AjaxMethod只能访问page类中static性质数据,否则就会变成null,但我希望是客户端互相不影响的独立数据,所以不能用static,如何是好?纠结~~

------解决方案--------------------
1,是的,一个访问一个实例
2,所有其他页面都能访问到【public的,私有自能自己访问了】,和application差不多
3,客户端都是独立,不存在static这种变量,但是可以通过相互关系进行修改或者获取,只要这2个页面有关系,如a window.open打开b,a可以存储b的句柄,b通过opener得到a的引用
参考:iframe和父页,window.open打开页面之间的引用

page类中的非static变量当内容输出到客户端后就释放了,另外的页面当然获取不到当前执行页面的非static变量内容,要想获取到就用static或者application或者session保存
------解决方案--------------------
可以用cookie存储,所有页面都可以读取cookie,不过cookie大小有限制,也不能直接application,session这种类型的变量,需要转换为字符串

模拟session,list这种对象可以使用json和数组。存储的时候要转为对应的字符串,获取后eval生成对应的对象,你可以参考json2.js,已经实现了json对象的序列化和反序列化,下载:json2.js下载和API