ballpenxp

博客园 首页 新随笔 联系 订阅 管理

1、在webconfig中加入:
                <!--
                让asp.net把任何匹配到特定的路径(ajax/*.ashx)请求发送到Ajax.PageHandlerFactory产生的HttpHandle,
                而不再是默认的Handler factory。
                你不需要创建ajax子目录,这是一个只用来临时使用的虚拟的目录,
                因此别的HttpHandler可以用他们自己的目录来使用.ashx扩展名的文件。
-->
                <httpHandlers>
                        <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro"/>
                </httpHandlers>


2.在要使用ajax的页面的load事件中加入:
Utility.RegisterTypeForAjax(typeof(ClassName));
需添加using AjaxPro;

3.在被javascript调用的函数前加:[AjaxMethod]标记

4.用javascript调用:Namespace.ClassName.Function();
        异步调用:
        Sample.ServerSideAdd(100,99, ServerSideAdd_CallBack);

        function ServerSideAdd_CallBack(response){
         if (response.error != null){
          alert(response.error);
          return;
         }
         alert(response.value);
        }

        这个callback函数接受一个带有四个关键属性的response对象:

        value:服务器端函数执行的返回值(可能是一个字符串、自定义对象或者dataset)
        error:如果发生错误,则返回错误信息.
        request:原始的xmlHttpRequest请求
        context:一个上下文对象

 


说明:
Ajax可以支持除了我们上面ServerSideAdd函数返回的Int值以外很多类型。他可以直接支持integers, strings, double, booleans, DateTime, DataSets 和 DataTables,也支持简单的自定义类型和数组。其他的类型通过其ToString方式来返回字符串。

在方法中使用Session需要指明:
Ajax.AjaxMethod(HttpSessionStateRequirement.Read)] 还可以是Write and ReadWrite

还可以设置属性供客户端调用
[AjaxPro.AjaxProperty()]
public string UserName
{
   set
   {
      Session["UserName"] = value;
    }
    get
    {
      return Session["UserName"].ToString();
    }
}

返回DataTable到客户端:
   tab = RYCSearch.Market.FrmTECDoc.GetInfo(docid).value; 
   tab是一个DataTable,
   则:tab.Rows.length 为记录数
   读取记录中的数据:
   dr = tab.Rows[0];
   document.all.Form1.txtLockBar.value = dr["LOCKBAR"];


 

posted on 2007-07-19 09:37  ballpenxp  阅读(448)  评论(0编辑  收藏  举报