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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章