刘军龙

于学术,宜精益求精;于生活,宜开开心心。

用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
MaleLionOfWakeUp的公告
---我有七十三条命,呵呵,别多想,我不是比孙悟空牛,是因为我拥有有七十三个真心的朋友。----
文章分类
存档

原创  Ajax研究小结 收藏

Ajax最近可谓是流行加火热,为web开发中的刷新问题带来了新的生机与希望。虽然这项技术在很久以前就有人在用,无非是XMLHttpRequest JavaScript的几项技术按一定的方式组合,也算不得什么新技术,但挂了一个名,做了一个封装,还是为不少开发人员提供了很多便捷。因此,我也抽出时间来研究了一下,并且应用到当前的项目里,同时做个小结放在这里。

具体使用:

1. 在项目中添加引用Ajax.dll (我用的版本是5.7.22.2)

2. 修改web.config,在里面增加

<configuration>
  
<system.web>
    
<httpHandlers>
    
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
    
</httpHandlers>  
    
  
<system.web>
</configuration>

3. 新建一个实现业务逻辑的类,并在里面增加方法,在方法上面加上[Ajax.AjaxMethod()]。如:

   /// <summary>

     /// 业务逻辑的类

     /// </summary>

     publicclass AjaxBLLClass

     {

         public AjaxBLLClass()

         {            

         }

         [Ajax.AjaxMethod()]

         public string GetPlaceList(int ClassID)

         {

              Advertisement.BLL.ADManage.AdPlace adplace=new Advertisement.BLL.ADManage.AdPlace();

              DataSet ds=adplace.GetListByClass(ClassID);

              string str="";

              for(int m=0;m<ds.Tables[0].Rows.Count;m++)

              {

                   str+=","+ds.Tables[0].Rows[m]["PlaceID"].ToString()+"|"+ds.Tables[0].Rows[m]["PlaceName"].ToString();

              }

str=str.Substring(1,str.Length-1);

return str;

         }

        

4. 在调用页的.cs的Page_Load事件中增加一行类注册代码

private void Page_Load(object sender, System.EventArgs e)
 {
   
//注册类获得有效的方法
   Ajax.Utility.RegisterTypeForAjax(typeof(AjaxBLLClass));
  }

注意:typeof(AjaxBLLClass)中,AjaxBLLClass是要包含要调用方法的类,即上面第3步新建的业务逻辑类AjaxBLLClass

5. 在调用页页面文件中或者单独写一个js文件,用Javascript代码调用业务逻辑的类的方法。如:

              function classResult()

         {

              var classid=document.getElementById("DropClassID");

              AjaxBLLClass.GetPlaceList(classid.value,get_class_Result_CallBack);//调用业务逻辑类方法

             

         }

         function get_class_Result_CallBack(response)

         {

              if (response.value != null)

              {                   

                   document.getElementById("DropPlaceID").length=0;

               var piArray = response.value.split(",");

          for(var i=0;i<piArray.length;i++)

          {

             var ary1 = piArray[i].toString().split("|");

             document.getElementById("DropPlaceID").options.add(new Option(ary1[1].toString(),ary1[0].toString()));

          }                   

              }               

              return

         }

6. 调用

<asp:dropdownlist id="DropClassID" runat="server" Width="250px" onchange= classResult()></asp:dropdownlist>

注:如果是低版本的Ajax需修改Global.asax的Application_Start事件,设置Ajax的HandlerPath :

protected void Application_Start(Object sender, EventArgs e)
  {
     
//Ajax.Utility.HandlerPath = "ajax";//老版本的需要
  }

使用感受:个人认为虽然它从一定程度上解决了页面的刷新问题,但却需要写大量的脚本代码,并且和.net的控件和类库结合还不是很好,还不适合在项目里大量地使用,在一些对刷新要求不是太高的地方还是用ASP.NET的编码方式好一些。

示例代码下载

附上一些Ajax资源

http://ajax.schwarz-interactive.de

http://weblogs.asp.net/mschwarz/

http://groups.google.com/group/ajaxpro?lnk=li

MSDN上的Atlas 网站

ASP.NET "Atlas" 官方网站

ASP.NET "Atlas" 预览文档

Atlas  快速入门教程 

 

 

 

 

 

发表于 @ 2008年03月18日 09:51:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:用OWC做统计图总结  | 新一篇:Web2.0时代,RSS你会用了吗?(技术实现总结)

  • 发表评论
  • 评论内容:
  •  
Copyright © MaleLionOfWakeUp
Powered by CSDN Blog