bool IHttpHandler.IsReusablevoid IHttpHandler.ProcessRequest(HttpContext context)Example: bool IHttpHandler.IsReusable{ get { return true; }}void IHttpHandler.ProcessRequest(HttpContext context){ context.Response.Clear(); //获取要调用的方法 string methodName = context.Request.QueryString["me"]; //获取程序集信息。 //Czhenq.AJAX.Class1.Dencode是自定义的字符串编码方法 string AssemblyName = Czhenq.AJAX.Class1.Dencode(context.Request.QueryString["as"]);
//获取方法的参数 string Arguments = context.Request.QueryString["ar"]; //开始调用方法 Type type = Type.GetType(AssemblyName); MethodInfo method = type.GetMethod(methodName,
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance); if (method != null) {//参数使用","分隔string[] args = Arguments.Split(",".ToCharArray());ParameterInfo[] paras = method.GetParameters(); object[] argument = new object[paras.Length];for (int i = 0; i < argument.Length; i++){ if (i < args.Length) { //因为XmlHttp传递过来的参数全部时String类型,所以必须进行转换//这里只将参数转换为Int32,并不做其他考虑。 argument[i] = Convert.ToInt32(args[i]); }}object value = method.Invoke(Activator.CreateInstance(type, true), argument);if (value != null) context.Response.Write(value.ToString());else context.Response.Write("error"); } //处理结束 context.Response.End();}
2. 客户端Javascript代码:
3.一个简单的AJAX框架已经实现。现在写段代码来测试.使用自己的AJAX1.新建一个网站,并应用刚才你编写的HttpHandler。并在网站的Web.config中注册你的HttpHandler,说明那些请求将使用你编写的Handler来处理。下面的内容说明:所有以"czq"结尾的请求,都将使用"Czhenq.HttpHandlerFactory"来处理。
type="Czhenq.HttpHandlerFactory, Czhenq.AJAX"/>
2.添加一个web页面,将刚才的脚本拷贝到页面中,并添加一个你要调用的方法。
3.在页面中放置一个HiddenField控件,命名为AssemblyName。 并在Page_Load中添加如下代码:
string assemblyName = Czhenq.AJAX.Class1.Encode(
typeof(_Default).AssemblyQualifiedName);AssemblyName.Value = assemblyName;
4.页面中添加如下脚本:
总结 AJAX并不是一种新的技术,它只是一些已有技术的有机结合,我们可以将AJAX简单的理解为:AjAx是对JavaScript调用XmlHttp的封装,它改变的是代码书写方式。附 Encode 与 Dencode实现: