不用组件实现Ajax效果_AJAX教程
推荐:使用AJAX技术实现网页无闪自动局部刷新实例解决问题: 希望实现用户在进入系统以后(整个session的时效之内),如果收到新邮件则发出声音提示。 实现思路: 1.首页部分: body onload=init('');> // load时调用init(us
现在.NET的Ajax组件确实不少了,微软的ajax extensions用起来很方便,一个UpdatePanel就可以搞定一切。不过,可能有些朋友更愿意自己来写。那么在.NET里,你是否知道ICallbackEventHandler呢?
大家应该都知道ASP.NET页面调用时的几种方式:Postback/Cross-page posting/Server transfer/Callback,如果你还不太了解,你可以看看MSDN:How to: Determine How ASP.NET Web Pages Were Invoked
现在要说的,就是Callback这种调用方式。
简单的说,使用Callback可以得到你平常看到那么Ajax效果,即不刷新整个页面,只更新其中一个部分。
使用Callback,只需要做以下4步:
1、在你的页面中继承System.Web.UI.ICallbackEventHandler接口。
public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
protected void Page_Load(object sender, EventArgs e)
{
}
#region ICallbackEventHandler Members
public string GetCallbackResult()
{
}
public void RaiseCallbackEvent(string eventArgument)
{
}
#endregion
}
如果你没有使用code-behind,那你也可以在aspx页面顶部加入下面的代码:
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
2、在前台写一段自定义的javascript,更新页面
这一段javascript用来更新页面的某个局部,就像你平常操作的一样,写些document.getElementById("xxx").innerHTML="working on your request...."。
你可能有些迷糊,就得到了吗?连个什么XMLHttpRequest都没有哩……
3、在Page_Load中再注册一段javascript
string script = Page.Clientscript.GetCallbackEventReference(this, "arg", "GetFlag", "");
Page.Clientscript.RegisterClientscriptBlock(this.GetType(), .......//省略了一大串
上面的GetCallbackEventReference是用来得到客户端函数的引用,发起一个callback到服务器端的,你不必知道详细内容。
你只需要了解:
- 第一个参数填this,用来handle客户端的callback的,它必须继承ICallbackEventHandler接口并提供RaiseCallbackEvent方法,我们已经在继承了这个接口,上面第一点中的代码也有RaiseCallbackEvent方法,只是还没有具体写内容呢。
- 第二个参数就是那个 从客户端传到服务器端的参数。如果你想要注册的检查用户是否可用,那么这里的值就是用户输的那个值。
- 第三个参数是前台的javascript函数名,在第二步中我们写的名字是:GetFlag。当数据好了,这个javascript函数就会用到。
- 第四个参数一般用不上。
返回值:一个函数的名字,是客户端调用的函数名。这个函数会调用到服务器端了。
4、调用你的函数。
上面一定是 onclick="callServer()"吗?呵呵,这要看你了,你在Page.Clientscript.RegisterClientscriptBlock注册的什么javascript函数名字,就是什么名字了。(在第3步的第二行code中)
已经完了。如果你还是一头雾水,没关系,下面看一个实例:
分享:Web2.0岁月使用AJAX技术的十大理由 保守来说,AJAX在现在是热得不能再热的技术。没有人能否认,它拥有大批的支持者。在CNN上,它从二月份的一个不被看好的词语到十月份成长成一个初具雏形的技术。所以,有必要要看看为什么
- 相关链接:
- 教程说明:
AJAX教程-不用组件实现Ajax效果。