程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 使用ICallbackEventHandler接口更高效實現Ajax

使用ICallbackEventHandler接口更高效實現Ajax

編輯:C#入門知識

  使用ICallbackEventHandler接口可以方便地高效地實現Ajax功能 1、處理頁面需實現ICallbackEventHandler接口,此接口有兩個方法       a、GetCallbackResult  此方法返回處理結果給客戶端,請求完成後自動調用       b、RaiseCallbackEvent此方法是從客戶端獲取數據 由參數eventArgument 接收,並進行相關處理得出結果 2、注冊回調和主調腳本       a、注冊回調函數  string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context");             注冊一個對於回調函數的引用,用於獲取返回結果,並進行業務邏輯處理,注冊的函數名和客戶端書寫的函數名需相同才能引用       b、注冊主調函數,主調函數,像服務器發送請求 string regCallbakeScript = "function CallServer(arg,context){" + reference + "}";             Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true);       c、客戶端腳本:一個回調函數fucntion SendData(arg,context){alert(arg);}            直接調用CallServer函數發送請求   [csharp]   服務端代碼   [csharp]  /// <summary>   /// 實現ICallbackEventHandler接口,完成Ajax更快的功能   /// </summary>   public partial class _Default : System.Web.UI.Page,ICallbackEventHandler   {       private string returnValue = string.Empty;       protected void Page_Load(object sender, EventArgs e)       {           //注冊回調腳本、具體實現自己寫,此腳本中接收返回結果           string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context");           //注冊處理腳本           string regCallbakeScript = "function CallServer(arg,context){" + reference + "}";           Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true);       }         #region ICallbackEventHandler 成員          /// <summary>       /// 返回結果       /// </summary>       /// <returns></returns>       public string GetCallbackResult()       {           if (string.IsNullOrEmpty(returnValue))               return (returnValue = "-1");           return returnValue;       }          /// <summary>       /// 觸發RaiseCallbackEvent事件獲取客戶端數據,然後進行處理       /// </summary>       /// <param name="eventArgument"></param>       public void RaiseCallbackEvent(string eventArgument)       {           returnValue = eventArgument;       }         #endregion   }     [javascript]   客戶端腳本代碼:   [javascript]   <script type="text/javascript">          //接收回調結果,此函數在處理服務器完成後自動回調,即為回調函數,相當Ajax中的回調函數       function SendData(arg) {           alert(arg);       }          //客戶端邏輯函數       function GetReturnValue() {           var arg = "Hello CallbackEventHandler!";           //調用頁面加載完成後注冊的腳本,傳遞參數'arg'由服務器進行處理,第二個參數'context'不用傳遞           CallServer(arg,"");       }   </script>   <input type="button" value="CallbackMe" id="btn" onclick="GetReturnValue()" />    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved