zoukankan      html  css  js  c++  java
  • 使用AjaxPro来实现异步加载和同步加载

    1.在项目中添加引用,浏览找到AjaxPro.2.dll文件。

    2.在Web.config中写入以下代码

      <system.web>
        <httpHandlers>
          <add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2" />
        </httpHandlers>
      </system.web>
    View Code

    3.在加载事件中,加入

    AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));

    例如:
    public partial class Vacation_UserControl_Optiontour : System.Web.UI.UserControl
    {
     
        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(Vacation_UserControl_Optiontour));
            if (!IsPostBack)
            {
            }
        }
    }
    View Code

    4.写的方法都要用[AjaxPro.AjaxMethod]开头,然后在写方法,要用public的

    例如:

        [AjaxPro.AjaxMethod]
        public string getInfo(Int32 str)
        {
            string info = str.ToString();
            if (str>0)
            {
                Int32 optid = str;
                DataSet dsinfo = myOptionalDal.GetOptioanlTourByOptioanId(optid);
                if (dsinfo.Tables[0].Rows.Count > 0 && dsinfo.Tables[0] != null)
                {
                    info = dsinfo.Tables[0].Rows[0]["Description"].ToString().Replace("<p>", "").Replace("</p>", ""); ;
                }
                else
                {
                    info = "为空";
                }
            }
            else
            {
                info = "";
            }
            return info;
        }
    View Code

    5.调用时必须写清楚

    命名空间名.类名.方法,例:AjaxProExample.Add(); 
    例如:
    var i = Vacation_UserControl_Optiontour.getInfo(optionid).value;
    6.调用可分两中方法(同步调用,异步调用) 
     同步调用 : 
    //在后台写的无参方法
        [AjaxPro.AjaxMethod]
        public string getStr()
        {
            return "hello my friends";
        }
    
        //在后台写的有参方法
        [AjaxPro.AjaxMethod]
        public string getString(string str)
        {
            return str + " Say: hello my friends";
        }  
    View Code

    前台代码: 

     function SayHello() {
                var len = arguments.length; //重载
                if (len == 0) {
                    var res = AjaxProExample.getStr().value;//同步调用无参
                    alert(res);                
                } else if (len == 1) {
                    if (arguments[0] == "") {
                        alert("内容不能为空");
                    } else {
                        var res = AjaxProExample.getString(arguments[0]).value;//同步调用有参
                        alert(res);
                    }               
                }
            }
    View Code

    异步调用:

    //后台代码 
       [AjaxPro.AjaxMethod]
        public int Add(int a, int b)
        {
            return a + b;
        }
    View Code
        //前台代码
           function AddNum() {
                var a = document.getElementById("txt1").value;
                var b = document.getElementById("txt2").value;
                if (a == "" || b == "") {
                    alert("请输入合法的数值");
                    return;
                }
                //var res = AjaxProExample.Add(a, b).value;        //调用后台代码后直接返回数据,不用显示执行回调函数(同步调用)
                var res = AjaxProExample.Add(a, b, disp_callback); //调用后台代码后通过回调函数来显示返回的数据(异步调用)
            }
            function disp_callback(response) {
                alert("累计求和: " + response.value);
    
            }  
    View Code

    7.调用对象 

    public class PersonInfo
    {
        public int Age{get;set;}
        public string Name{get;set;}
        public string Sex{get;set;}
        public PersonInfo(string name,int age,string sex)
        {
            Name = name;
            Age = age;
            Sex = sex;        
        }
    } 
    View Code
    //后台代码
    [AjaxPro.AjaxMethod]
    public PersonInfo getClass()
    {
        PersonInfo p = new PersonInfo("张三", 25, "");
        return p;
    }
    View Code
    //------------------同步调用对象-----------
    function Button5_onclick() {
        var res = AjaxProExample.getClass().value;
        alert("姓名:" + res.Name + "年龄:" + res.Age + "性别:" + res.Sex);
    }
    //------------------异步调用对象-----------
    function Button6_onclick() {
         AjaxProExample.getClass(getClassCallBack);
    }
    function getClassCallBack(response) {
        var res = response.value;
        alert("姓名:" + res.Name + " 年龄:" + res.Age + " 性别:" + res.Sex);
    
    }  
    View Code

    8.数据集的使用

    //后台代码
    [AjaxPro.AjaxMethod]
        public DataTable getData()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("Telphone");
            DataRow dr = dt.NewRow();
            dr["Name"] = "李四";
            dr["Telphone"] = "189********";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["Name"] = "王五";
            dr["Telphone"] = "189*********";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["Name"] = "张三";
            dr["Telphone"] = "189*********";
            dt.Rows.Add(dr);
            return dt;
        }
    View Code
    //前台
    function Button7_onclick() {
                var dataTable = AjaxProExample.getData().value;
                var strHtml = "";
                strHtml += '<table style ="border-collapse:collapse ; border-color:Gray ;" border="1px">';
                strHtml += ' <tr>';
                strHtml += ' <td>姓名</td>';
                strHtml += ' <td>手机号</td>';
                strHtml += ' </tr>';
                for (var i = 0; i < dataTable.Rows.length; i++) {
                    strHtml += ' <tr>';
                    strHtml += ' <td>' + dataTable.Rows[i].Name + '</td>';
                    strHtml += ' <td>' + dataTable.Rows[i].Telphone + '</td>';
                    strHtml += ' </tr>';
                }
                strHtml += ' </table>';
                var divDataTable = document.getElementById("divDataTable");//一个div控件
                divDataTable.innerHTML = strHtml; //
            }
    View Code
     
  • 相关阅读:
    微信公众平台开发(51)会员卡
    iOS UIViewController的瘦身计划
    NSProxy
    Xcode
    NSPredicate
    NSArray、NSDictionary
    iOS Runtime
    iOS UmbrellaFramework
    iOS UmbrellaHeader
    iOS OCR
  • 原文地址:https://www.cnblogs.com/zhourourou/p/5209979.html
Copyright © 2011-2022 走看看