使用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

 

 

posted on 2016-02-23 15:09  周肉肉  阅读(441)  评论(0编辑  收藏  举报

导航