• 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>

         public class 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. 在调用页的.csPage_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.asaxApplication_Start事件,设置AjaxHandlerPath

    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  快速入门教程

    (作者:李天平    转载请注明)


  • 相关阅读:
    SQL结构化查询语言
    数据库主外键
    SQL数据库数据类型详解
    注释和特殊符号
    文本装饰
    列表样式
    网页背景
    SQL数据库数据类型详解
    数据库主外键
    Update 语句
  • 原文地址:https://www.cnblogs.com/ltp/p/289725.html
Copyright © 2020-2023  润新知