使用ICallbackEventHandler接口更高效实现Ajax
使用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函数发送请求
/// <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
}
客户端脚本代码:
<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()" />
使用ICallbackEventHandler接口更高效实现Ajax的更多相关文章
- 使jQuqer更高效的方法
讨论 jQuery 和 javascript 性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的 jQuery 和 javascript 代码.好的代码会带来速度 ...
- ICallbackEventHandler 接口实现回调处理功能
在最近的项目实现中遇到了一个问题 在数据处理的过程中,需要请求获取数据,再做处理之后,可以在页面及时获取数据 开始时,首先想到的到是写Ajax请求,但在做后续数据处理后,处理获取数据等操作,感觉实现起 ...
- 采用ADM2483磁隔离器让RS485接口更简单更安全
采用ADM2483磁隔离器让RS485接口更简单更安全 摘要:本文介绍RS485的特点及应用,指出了普通RS485接口易损坏的问题,针对存在的问题介绍了以ADM2483为核心的磁隔离解决方案. 关键词 ...
- 阿里面试:MySQL如何设计索引更高效?
有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...
- HarmonyOS新能力让数据多端协同更便捷,数据跨端迁移更高效!
作者:yijian,终端OS分布式文件系统专家:gongashi,终端OS分布式数据管理专家 HarmonyOS作为分布式操作系统,其分布式数据管理能力非常重要.我们也一直围绕持续为开发者带来全局&q ...
- K8s 如何提供更高效稳定的编排能力?K8s Watch 实现机制浅析
关于我们 更多关于云原生的案例和知识,可关注同名[腾讯云原生]公众号~ 福利: ①公众号后台回复[手册],可获得<腾讯云原生路线图手册>&<腾讯云原生最佳实践>~ ②公 ...
- 如何更高效地定制你的bootstrap
bootstrap已经作为前端开发必不可少的框架之一,应用bootstrap使得我们对布局.样式的设定变得非常简单.但bootstrap提供的默认样式往往不能满足我们的需求,从而定制化bootstra ...
- documnent.getElementbyId(‘myId’)和$(‘#myId’)哪种更高效?
第一种更高效,直接调用javascript引擎.
- 为什么说Parcelable 比Serializable更高效
本文转载自:http://blog.csdn.net/androidzhaoxiaogang/article/details/8172539 什么是序列化,实现序列化的目的是什么? 讨论这个问题之前, ...
随机推荐
- linux磁盘空间用满的处理方法
linux下空间满可能有两种情况 可以通过命令 df -h 查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) df -i 查看索引节点的占用(Inodes) 磁盘块和索引节点其中之一满 ...
- d010: 分离自然数
内容: 一个三位自然数,分离出它的百位.十位与个位上的数字 输入说明: 一行一个三位整数 输出说明: 一行三个数字 , 空格隔开.分别是百 十 个位数字 输入样例: 256 输出样例 : 2 5 ...
- asp.net core VS goang web[修正篇]
先前写过一篇文章:http://www.cnblogs.com/gengzhe/p/5557789.html,也是asp.net core和golang web的对比,热心的园友提出了几点问题,如下: ...
- Vxworks、QNX、Xenomai、Intime、Sylixos、Ucos等实时操作系统的性能特点
Vxworks.QNX.Xenomai.Intime.Sylixos.Ucos等实时操作系统的性能特点 VxWorks操作系统 VxWorks 操作系统是美国WindRiver公司于1983年设计开发 ...
- MPMediaPickerController 选取本地音频--备用
MPMediaPickerController 与 UIImagePickerController 类似,允许用户从音乐库中选取音乐.播客.音频书. 一.创建 MPMediaPickerControl ...
- 有了screen,妈妈再也不用担心我的学习啦
创建一个srceen screen -S test1 从screen离开 crtl+a d (左手按住crtl和a 然后右手按d) 查看当前有多少screen screen -ls 回到screen ...
- ESSENTIAL ENGLISH SLANG
airhead: stupid person. ace: excellent, great. Adam and Eve - Rhyming Slang for 'believe'. aggro - s ...
- uva 10034 Problem A: Freckles
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- Acdream Mengzhu
http://acdream.info/problem?pid=1006 #include <cstdio> #include <cmath> #include <cst ...
- Qt on Android
Qt on Android Episode 7(翻译) http://blog.csdn.net/foruok/article/details/46323129 Android基础整理之四大组件Act ...