閱讀969 返回首頁    go 小米 go 小米6


使用AjaxPro實現ajax效果

本篇將使用AjaxPro.Net框架實現同樣的功能:在客戶端異步獲取服務端時間!AjaxPro.Net是一個優秀的.net環境下的ajax框架,用法很簡單,可以查閱相關資料,簡單說有幾點:
1)添加AjaxPro.dll應用;
2)配置web.config;
3)寫服務端方法,加[AjaxPro.AjaxMethod]申明;
4)客戶端調用服務端方法;(ajaxpro最大的優點:客戶端js中直接調用服務端方法)
客戶端代碼:
<html xmlns="https://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>AjaxPro onLoading</title>
</head>
<body>
    
<form id="form1" runat="server">
        
<div id="loadinfo" style="visibility:hidden;position:absolute;left:0px;top:0px;background-color:Red;color:White;">Loading</div>
   
        
<input id="Button1" type="button" value="Get ServerTime" onclick ="javascript:GetTime();void(0)" />

        
<script type="text/javascript" defer="defer">...
        
        
// loading效果
        AjaxPro.onLoading = function(b) 
        
...{
            
var a = document.getElementById("loadinfo");
            a.style.visibility 
= b ? "visible" : "hidden";
        }


        
function GetTime() 
        
...{
            
// 調用服務端方法
            //調用方法:類名.方法名 (參數為指定一個回調函數)
            myLoad.GetServerTime(callback);
        }


        
function callback(res)  //回調函數,顯示結果
        ...{
            alert(res.value);
        }

        
</script>
    
</form>
</body>
</html>
注: javascript代碼放在form內結束處,確保可以訪問AjaxPro對象,否則提示AjaxPro未定義;因為在服務端page_load輸出 js到頁麵後才到找到AjaxPro對象;且javascript的defer="defer",頁麵加載時先不執行此代碼。
服務端代碼:
public partial class myLoad : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        AjaxPro.Utility.RegisterTypeForAjax(typeof(myLoad)); //注冊ajaxPro,括號中的參數是當前的類名
    }

    [AjaxPro.AjaxMethod] //申明是ajaxPro方法
    public string GetServerTime()
    {
        System.Threading.Thread.Sleep(2000);
        return DateTime.Now.ToString();
    }
}
 

最後更新:2017-04-02 00:06:24

  上一篇:go InfoQ:用Spring 2.0和AspectJ簡化企業應用程序
  下一篇:go [公告]匯編提問的智慧