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();
         }
}

你可能感兴趣的:(Ajax)