Ajax.NET Pro 简单例子和注意
-----------------------------------------------------------------------------------------------------------
2{
3
4 protected void Page_Load(object sender, EventArgs e)
5 {
6 AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxPro_example_Default));//必须保证每次回发时都执行此注册语句
7 }
8
9 [AjaxPro.AjaxMethod]
10 public DateTime GetServerTime()
11 {
12 return DateTime.Now;
13 }
14}
★前台代码如下:当页面载入后,间隔一秒从服务器上取得时间并显示在aspx页面上的divMsg中
----------------------------------------------------------------------------------------------------
2 <title>无标题页</title>
3<script type="text/javascript">
4function getServerTime()
5{
6 //AjaxPro_example_Default.GetServerTime(getServerTime_callback); // asynchronous call 注释掉:示例中的原代码
7
8 window.setInterval("AjaxPro_example_Default.GetServerTime(getServerTime_callback)",1000);//每隔一秒调用一次
9}
10
11// 回调函数
12function getServerTime_callback(res)
13{
14 //alert(res.value);//注释掉:示例中的原代码
15 document.getElementById("divMsg").innerText=res.value;//将时间值填充到div中呈现
16}
17
18window.onload=getServerTime;//页面载入时执行
19
20</script>
21</head>
22<body >
23 <form id="form1" runat="server">
24 <div id="divMsg" style="width: 100px; height: 100px">
25 </div>
26 </form>
27</body>
28</html>
★值得注意的几个要点:
----------------------------------------------------------------------------------------------------
1.必须在Web应用程序的根目录下的Web.config文件的<system.web>结点内中添加:
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
2. 服务端必须在Page_Load中注册包含调用方法的类,并且必须保证页面每次回发时都执行注册语句。
即不能写成:
if(!IsPostBack)
{ //注册语句不能写在此处,否则页面回发后,客户端将无法访问到AjaxPro_example_Default类
AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxPro_example_Default));
}
3. 服务端只有用[AjaxPro.AjaxMethod]标记过的方法,才能被客户端调用
4. 客户端页面上必须有<form runat="server">标记,否则不能访问在服务端已注册的类
★遗憾之处:
----------------------------------------------------------------------------------------------------
不能跨页面调用,只能在与后代cs相关联的前台页面上访问注册过的类或方法,要是可以在一处(如global文件中)注册所有需要在前台访问的对象,而前台不论是哪个位置的html或aspx页面都可以访问到注册过的对象,那将是更加的方便灵活。