这篇文章我不会引用网上任何一篇文章的原话,全是本身的感觉,相信会帮助很多想知道AJAX是什么东西和怎么应用的人,由于我也是初学者,因此写的可能会有不对的,不对的地方但愿老程序员们能指出来千万不要误人子弟,这也是我写这篇文章的另外一个目的,好开始
注:我是使用ASP.NET的
AJAX的长篇理论我不想说,什么全称,什么DOM,XMLHTTP什么的网上资料一大堆本身去查,咱们了解一下就行。
[不用AJAX的页面不叫WEB2.0,是WEB2.0的页面都会用AJAX的]
使用AJAX的目的没别的,就是实现无刷新更新页面,所谓异步就是不用执行后台程序,前台就会获得相应的改变值,从而实现前台页面改变数据的目的,而这个改变的值仍是经过后CS代码操做改变的,听起来会很不可意,这是怎么做到的那,听我慢慢说。
通过我这几天的研究,在ASP.NET里实现AJAX的方法可不仅一种
1.有直接用框架的:这种我比较喜欢,由于比较干净,用本身的框架,我试过Ajaxpro和Prototype,这两种我用过了,以为不错,之后我还会继续用,Jquery其实也属于这一范畴,今天研究半天,没太明白,多是我没找到现成的框架吧,因此就不研究了
2.还有一种就是用微软专门为Ajax开发的控件包,叫做ASP.NET AJAX Control Toolkit,这个我没太研究,网上有相关资料,想知道的能够本身去查,里面有不少现成的控件能够实现AJAX。
3.用VS2005的能够下个ASPAJAXExtSetup.msi,里面有updatepanel控件也能够实现AJAX,这个我只初步试了一下,也好用,不过原理还不太明白。
以上三种是我收集到的一些AJAX的实现方法,我要讲的是第一种方法的应用,由于第一种能叫你明白AJAX的运行原理,比较适合初学者。
我主要讲Ajaxpro,这是个组件,必须去网上下载,其实就是一个Ajaxpro.dll文件,注意,网上有两种一种叫Ajax.dll一种叫Ajaxpro.dll,这两种功能上是同样的,就是添加引用的语句有些不一样,下面我会分别说的。其实用AJAX都要下相关组件的,开始我也不习惯下什么插件,可后来仍是下了,不下不行呀。我下到的是Ajax.dll,因此讲时以Ajax.dll为准。
应用篇,这如下的东西会借鉴网上其余人的文章,在这里声明一下 1.先把Ajax.dll添加引用到项目中,别告诉我不会,若是连这个也不会就太那个了,和添加其余DLL同样,在项目上右击,菜单上有个[添加引用],而后一步一步把那个.DLL文件添加进来,以后你会在项目的引用中看到那个Ajax.dll就是添加成功了 2.修改Web.config。在 <system.web> 元素中添加如下代码。这里的Ajax.dll和Ajaxpro.dll引用方法是不同的,必定要注意 <configuration> <system.web> <httpHandlers> <!-- Ajax.dll的配置文件写法为,我下载到的是这个 --> <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" /> <!-- AjaxPro.dll的配置文件写法为,根据你下载到的DLL文件选择不一样的配置语句--> <add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/> </httpHandlers> </system.web> </configuration> 3对AjaxPro用到的页Page_Load事件中进行运行时注册。如: protected void Page_Load(object sender, EventArgs e) { Ajax.Utility.RegisterTypeForAjax(typeof(_Default));//是Ajax.dll的 AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));//Ajaxpro.dll的 } //这的_Default是指页面类的类名,就是这个页面的名字。如是放在命名空间,则须要写上完整的命名空间(如:namespaces._Default) 4建立服务器端方法 [Ajax.AjaxMethod]//这句必定要有,若是你是Ajaxpro.dll就写成[AjaxPro.AjaxMethod] public string getValue(int a,int b) { //该方法咱们将实现从客户端传入两个数,在服务器端相加计算后返回到客户端。这里能够写在原来的页后台中也能够单独写一个类。 return Convert.ToString(a+b);//这里返回的就是前台获得的值,反正参数已经进CS文件了,想怎么操做就怎么操做,包括读库均可以。 } 5 客户端调用。 <%@ Page language="c#" Codebehind="WebPage1.aspx.cs" AutoEventWireup="false" Inherits="Web.WebPage1" %> <script language="javascript"> function getValue() { //这里若是是AjaxPor.dll就加Web._Default.getValue,若是是Ajax.dll就不用加命名空间以下 _Default.getValue(1,2,getGroups_callback);//该处即调用服务器端的_Default.getValue方法。 //_Default就是写getValue的那个类,若是写在本页CS里就是WebPage1.getValue,1和2是参数。 //这在里边getGroups_callback指定的是个回调函数,以接受服务器端处理完后返回客户端结果。 } //这个方法用户接受并处理服务器端返回的结果。 function getGroups_callback(response) { var dt=response.value;//这个值就是最终传回来的值,想怎么用就怎么用,反正回前台了。 document.getElementById("Div_1").innerHTML=dt; } </script> <body> <div id="Div_1"> </div> <button </botton> </body>