创新源于理解 轻松打造自己的AJAX框架(2)

ajax|ajax框架

AJAX介绍

  AJAX并不是一种新的技术,而是一些已有技术的有机结合,主要包括:XmlHttp、Reflect。一个AJAX框架基本上包括:一个自定义的HttpHandler、一段JavaScript代码。

  AJAX运行机制:

  以前我们使用XmlHttp实现无刷新页面的时候,是用XmlHttp来请求一个隐藏的页面,使用(Asp/Asp.Net)自带的HttpHandler,而在AJAX中,我们请求的也是一个隐藏的页面,不同的是这个页面的HttpHandler是由我们自己来实现。 打造自己的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框架已经实现。现在写段代码来测试.

  使用自己的AJAX:

  1.新建一个网站,并应用刚才你编写的HttpHandler。并在网站的Web.config中注册你的HttpHandler,说明那些请求将使用你编写的Handler来处理。下面的内容说明:所有以"czq"结尾的请求,都将使用"Czhenq.HttpHandlerFactory"来处理。

  2.添加一个web页面,将刚才的脚本拷贝到页面中,并添加一个你要调用的方法。

private string Add(int i, int j)
{
 return TextBox1.Text;
}

  3.在页面中放置一个HiddenField控件,命名为AssemblyName。 并在Page_Load中添加如下代码:

string assemblyName = Czhenq.AJAX.Class1.Encode(typeof(_Default).AssemblyQualifiedName);
AssemblyName.Value = assemblyName;

  4.页面中添加如下脚本:

var assemblyName = document.getElementById("AssemblyName");
var argus = new Array();
argus.push("100");
argus.push("200");
CallMethod(assemblyName,"Add",argus);

  总结:

  AJAX并不是一种新的技术,它只是一些已有技术的有机结合.我们可以将AJAX简单的理解为:AjAx是对JavaScript调用XmlHttp的封装.它改变的是代码书写方式.

   Encode 与 Dencode实现:

public static string Encode(string value)
{
 byte[] bytes = ASCIIEncoding.ASCII.GetBytes(value);
 return Convert.ToBase64String(bytes);
}
public static string Dencode(string value)
{
 byte[] bytes = Convert.FromBase64String(value);
 return ASCIIEncoding.ASCII.GetString(bytes);
}
  • Ajax: 一个建立Web应用的新途径
  • Ajax的错误处理机制探讨(2)
  • Ajax的错误处理机制探讨(1)
  • 初次体验.NET Ajax无刷新技术
  • Rails系统中的AJAX开发技术简析(4)
时间: 2024-11-08 19:59:45

创新源于理解 轻松打造自己的AJAX框架(2)的相关文章

创新源于理解 轻松打造自己的AJAX框架(1)

ajax|ajax框架 作者:陈振泉出处:天极开发责任编辑: 方舟 [ 2006-03-16 15:01 ] 本文实现的只是一个最基本的AJAX框架.虽然AJAX并不是什么新技术,但是做为一个框架并不是一篇文章就能说明白的 本文实现的只是一个最基本的AJAX框架,虽然AJAX并不是什么新技术,但是做为一个框架并不是一篇文章就能说明白的.写这篇文章的目的:希望能帮助初学者更好的学习.运用AJAX框架. 我始终相信只有你真正理解了一种技术,了解了技术本身,你才能更好.更灵活的使用它.一个程序员对技术

创新源于理解 轻松打造自己的AJAX框架

本文实现的只是一个最基本的AJAX框架,虽然AJAX并不是什么新技术,但是做为一个框架并不是一篇文章就能说明白的.写这篇文章的目的:希望能帮助初学者更好的学习.运用AJAX框架. 我始终相信只有你真正理解了一种技术,了解了技术本身,你才能更好.更灵活的使用它.一个程序员对技术的了解并不能仅仅停留在对技术的应用上. 环境:Window Xp sp2 + .Net FramwWork 2.0.50727. Asp.Net 2.0自带的客户端回调 Asp.Net 2.0已经发布.2.0有了许多新特性,

理解才能创新 轻松打造自己的AJAX框架

ajax|ajax框架 本文实现的只是一个最基本的AJAX框架,虽然AJAX并不是什么新技术,但是做为一个框架并不是一篇文章就能说明白的.写这篇文章的目的:希望能帮助初学者更好的学习.运用AJAX框架. 我始终相信只有你真正理解了一种技术,了解了技术本身,你才能更好.更灵活的使用它.一个程序员对技术的了解并不能仅仅停留在对技术的应用上. 环境:Window Xp sp2 + .Net FramwWork 2.0.50727. Asp.Net 2.0自带的客户端回调 Asp.Net 2.0已经发布

创新源于模仿之一:TabActivity的美化

  今天开始一个新专题:创新源于模仿. 第一篇从TabActivity着手,一直以为Android中的TabActivity只能放在上面,只能如此丑陋,直到有一天看到"米聊". 咋一看,软件下面的那个菜单栏,觉得像是用LinearLayout+Button来实现的,但事实上,它却是一个Tab! 怎么看出来的?我就不多说了,你懂的. 下面我们来抽丝剥茧,一步步分析它的实现过程. 1.TabActivity的布局 <TabHost xmlns:android="http:/

海多:轻松打造高质量原创内容的几个总结

大家好,我是海多,今天我给大家分享如何轻松打造高质量原创内容.首先,我们做SEO的都知道原创的重要性,因为不管搜索引擎算法怎么变,高质量原创内容和外链都是排名的核心因素之一. 在分享之前我们先来分析一下一个网页的排名是怎么来的?是不是先有内容,大家觉得不错,都帮你宣传,就有了外链,然后搜索引擎就给了你一个好排名?如果只有外链没有内容,或者只有内容没有外链,排名都是不长久的.所以我们做SEO第一步就是先做内容.在这里,我发现有很多朋友都有以下几个误区: 误区一.收录越多,排名越好. 我有朋友有些网

用Fireworks轻松打造滑动导航菜单

  用Fireworks 8,我们可以轻松打造滑动菜单,为网页增添一点酷酷的特效. 先看一下最后效果: 1.打开FW 8.0 (我用的是8.0,当然其它版本也是一样的. 2.新建一个文档.大小760X400像素. 3.用矩形工具画一个渐变的矩形,这里这个矩形是要做为导航条的背景,所以你可以调配自己喜欢的颜色. 4.然后我用直线工具画了两条线见下图,做为分隔线来用. 5.然后按住Shift+G把这两条线组合成对象,复制这个对象,从窗口对齐面板最后见下图: 6.来这几部就比较关键了,按下快捷键Ctr

ps轻松打造中国特色水墨字体效果

  轻松打造中国特色水墨字体效果,运用photoshop笔刷及中国风素材,简单粗暴几步即可以完成,素材评论里面提供 分类: PS文字教程

用PS轻松打造漂亮的抽丝文字特效

新建文件, 我这里用的是15*9cm 300DPI,因为文件大小不样,所以做效果设的数值也就不一样了,你们可以也先按这个大小做,然后学会之后再改 图1 图2 图3 图4 图5 图6 Photoshop轻松打造漂亮的抽丝文字特效 图7 图8 图9 图10 图11 图12 Photoshop轻松打造漂亮的抽丝文字特效 图13 图14 图15 图16 图17 图18 图19           注:更多精彩教程请关注三联photoshop教程栏目,三联PS群:182958314欢迎你的加入 分类: P

试试Windows 7轻松打造更多酷炫的系统主题

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   很多朋友都喜欢给自己的电脑系统设置很多酷炫的主题.以往Windows 19803.html">XP系统中默认提供的界面样式显然无法满足人们越来越多的个性化需求,于是不同风格的主题包和一些主题美化软件层出不穷.不过在Windows 7中,想要让系统倍儿有"面子",可不需要四处"跪求"什么主题包或者依靠美化软件