• AJAXPro用法,关于JS同步和异步调用后台代码的学习


    一.AjaxPro的使用

    1.在项目中添加引用,浏览找到AjaxPro.2.dll文件
    注:关于AjaxPro.2.dll网上有得下载
     
    2.在Web.config中的system.web里面写入以下代码
    <configuration>
    <system.web>
        <httpHandlers>
                    <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
                </httpHandlers>
    </system.web>
    </configuration>
    3.在加载事件中,加入
      AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));
     
    4.后台的方法要用[AjaxPro.AjaxMethod]开头
     
    5.调用时必须写清楚  
    //命名空间名.类名.方法,例如:
    AjaxTest._Default.getData();

    6.调用可分两中方法(同步调用,异步调用)

    //在后台写的无参方法
    [AjaxPro.AjaxMethod]
    public string getStr()
    {
            return    "hello my friends";
    }
    //在后台写的有参方法
     [AjaxPro.AjaxMethod]
    public string getString(string str)
    {
             return str + "Say: hello my friends";
    }
    a.同步调用
     (1).拖入html控件button
     (2).双击,自动显示在.aspx的脚本中
     (3).在里面写入你要输入的内容
     例:
    //------------------同步调用无参-----------
        function Button1_onclick()
        {
                     var res=WebUI._Default.getStr();
                     alert(res.value);
        } 
        
    //------------------同步调用有参------------
    function Button2_ //TextBox1为服务器控件
    {
            var str=document.getElementById("<%=TextBox1.ClientID%>").value;
            var res=WebUI._Default.getStr(str);
            alert(res.value);
    }
    b.异步调用
     (1).拖入html控件button
     (2).双击,自动显示在.aspx的脚本中
     (3).在里面写入你要输入的内容
     例:
    //-----------------异步调用无参-----------------
    function Button3_ {
            WebUI._Default.getStr(getStrCallBack);
    }
    function getStrCallBack(res)
    {
            alert(res.value);
    }
    //-----------------异步调用有参-----------------
    function Button4_ {
            var str=document.getElementById("<%=TextBox1.ClientID %>").value;
            WebUI._Default.getString(str,getStringCallBack);
    }
    function getStringCallBack(res)
    {
            alert(res.value);
    }

    注:异步调用时,后台的方法无法进行重载,否则会出错。


    二、直接调用
    javascript中:<%=后台方法%>

    function says()
            {
                    alert("<%=Say()%>");
            }
            function del()
            {
                     alert("<%=DeleteByID(8)%>");//DeleteByID(8)后台方法名
            }


    三、采用ICallbackEventHandler回调

    /**//*
    * 对ICallbackEventHandler接口进行声明,要在客户端调用服务端代码而不回发,必须声明该接口并且实现它的两个方法:
    * RaiseCallbackEvent()、GetCallbackResult()
    * RaiseCallbackEvent()的参数是从前台传过来的,根据传来的参数执行不同的代码并将结果用GetCallbackResult()返回前台
    */


    //必须声明System.Web.UI.ICallbackEventHandler接口
    public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
    {
                    //定义一个回调的返回值
                    private string Result;
                    //定义两个变量,用来接收页面传过来到操作数
                    private string Num1;
                    private string Num2;
                    protected void Page_Load(object sender, EventArgs e)
                    {
                            
                     }
                         /// <summary>
                    /// 该方法是回调执行的方法,根据参数在这个方法中处理回调的内容,该方法没有返回值
                    /// </summary>
    /// <param name="eventArgument">此参数是从客户端传过来的</param>

            public void RaiseCallbackEvent(string eventArgument)
            {
                    //eventArgumeng 为javascript从客户端传递的参数,本例传过来三个参数用“/”分割将每个参数取出存入数组
                    string[] PagParams = eventArgument.Split('/');
                     Num1 = PagParams[1];
                     Num2 = PagParams[2];
                    //根据第一个参数(所选的操作符),调用不同的执行函数
                    switch (PagParams[0])
                    {
                            case "0":
                                     Result = add(); break;
                            case "1":
                                     Result = sub(); break;
                            case "2":
                                     Result = multi(); break;
                            case "3":
                                     Result = division(); break;
                     }
             }
         
            /**//// <summary>
            /// 该方法是返回回调的结果给客户端
            /// </summary>
            /// <returns></returns>
            public string GetCallbackResult()
            {
                    return Result;
             }

            //一下四个函数是通过RaiseCallbackEvent方法,调用的回调要执行操作的函数
            private string add()
            {
                    double addResult = double.Parse(Num1) + double.Parse(Num2);
                    return addResult.ToString();
             }

            private string sub()
            {
                    double addResult = double.Parse(Num1) - double.Parse(Num2);
                    return addResult.ToString();
             }

            private string multi()
            {
                    double addResult = double.Parse(Num1) * double.Parse(Num2);
                    return addResult.ToString();
             }

            private string division()
            {
                    double addresult = double.Parse(Num1) / double.Parse(Num2);
                    return addresult.ToString();
             }
    }
  • 相关阅读:
    Arm的几种工作模式
    Linux 串口驱动初始化前置定位crash log
    GPS的经纬度格式及转换
    git 常用命令
    windows 下 mongodb studio 3t 破解无限使用脚本
    从头开始 一、第一天
    十九、IDEA的pom文件手动添加依赖
    十八、{ "a", "ab", "ac", "abc", "de", "bc", "e" }不使用Arrays.sort()进行排序
    十七、Java中数组常见的几种排序方法!
    十六、IDEA创建一个maven工程
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2981842.html
Copyright © 2020-2023  润新知