一.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.AjaxNamespace("Qzb")] ,Qzb为别名
AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));
4.后台的方法要用 [AjaxPro.AjaxMethod]开头
5.调用时必须写清楚
//命名空间名.类名.方法,例如: AjaxTest._Default.getData();
//在后台写的无参方法 [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).在里面写入你要输入的内容 例: b.异步调用 (1).拖入html控件button (2).双击,自动显示在.aspx的脚本中 (3).在里面写入你要输入的内容 例:
注:异步调用时,后台的方法无法进行重载,否则会出错。二、直接调用 javascript中:<%=后台方法%> //------------------同步调用无参----------- 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); }
//-----------------异步调用无参----------------- 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); }
function says() { alert("<%=Say()%>"); } function del() { alert("<%=DeleteByID(8)%>");//DeleteByID(8)后台方法名 }
/**//* * 对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(); } }