ajax.dll的原理

来源:互联网 发布:淘宝租手机 编辑:程序博客网 时间:2024/04/29 23:56

主要的逻辑是反射页面类里的ajax方法,再输出为xml,再用javascripts 格式化一下,下面看看详细.

先在前台生成一断js脚本,src指向一个名称为该页命名空间和类名的js文件,如webapp,webform1.ashx文件

用一个handler类处理这个地址,
Path.GetFileNameWithoutExtension(this.context.Request.FilePath);得到命名空间和类名.
Type type = Type.GetType(key); 类
            mi = type.GetMethods(); 方法集合
MethodInfo.GetCustomAttributes(typeof(属性类))
遍历类里的方法找到相关ajax的方法
通过this.context.Request.InputStream.Read
 byte[] buffer = new byte[this.context.Request.ContentLength];
this.context.Request.InputStream.Read(buffer, 0, buffer.Length)
 sr = new StreamReader(new MemoryStream(buffer), Encoding.UTF8);
取post的参数.
下面是流程
当第一次访问时(IE执行到src的时候),handler类会先判断cache里有没值,没有值的话,通过反射回的方法和传过来的命名空间和类,生成相应的js代码,输出,生成的代码把ajax访问的url改为当前url加_method=后台方法名&_session=no,这样的参数.然后把生成的js代码放进cache里.
第二次访问就是执行js的时候,首先访问webapp,webform1.ashx的时候,handler类从cache取出js代码输出,然后ie执行ajax语句,ajax语句中的url指向如webapp,webform1.ashx?_method=后台方法名&_session=no这样的地址,handler通过判断传过来的url参数,去执行反射的ajax方法,把结果生成xml,输出.再通过js文件格式化成对象,返回.

原创粉丝点击