详解如何实现最基本的AJAX框架(2)

http://www.sina.com.cn 2008年06月11日 08:07  天极yesky

  打造自己的AJAX

  1.首先我们要实现一个Http处理程序(HttpHandler)来响应客户端的请求:

  实现自定义的HttpHandler需要实现IHttpHandler接口。

  该接口包含一个属性和一个方法:

  bool IHttpHandler.IsReusable

  void 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代码:

  function CallMethod(AssemblyName,MethodName,Argus)

  {

  var args = "";

  for(var i=0;i

  args += Argus[i] + ",";

  if(args.length>0) args = args.substr(0,args.length-1);

  var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');

  url = "AJAX/AJAX.czhenq?as=" + AssemblyName + "&me=" + MethodName +"&ar="+ args;

  xmlhttp.open("POST",url,false);

  xmlhttp.send();

  alert(xmlhttp.responseText);

  }

  3.一个简单的AJAX框架已经实现。现在写段代码来测试.

本文导航:
·Asp.Net 2.0自带的客户端回调
·打造自己的AJAX
·使用自己的AJAX

发表评论 _COUNT_条
Powered By Google
不支持Flash
·城市对话改革30年 ·新浪城市同心联动 ·诚招合作伙伴 ·企业邮箱畅通无阻
不支持Flash