Ajax是如何调用服务器端C#方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ajax是如何调用服务器端C#方法

谈起Ajax做过web开发的都非常熟悉,就是通过xmlhttp request与服务器端通信而避免页面刷新。关于Ajax是如何运作的,网上有很多帖子解释其各js文件的作用及调用xmlhttp的原理。但Ajax到底是怎么调用服务器端的C#代码的呢?怎么让后台的方法运行并将结果反馈给xmlhttp的呢?曾经有个同事问起我这个问题,我还真懵了!本以为象.Net 1.1下通过form传递必要的EventName及EventPara等参数传给服务器端继而解析后执行对应的事件一样来调用C#代码的(.net调用事件机制也不全是这么回事,待探讨),但通过仔细研究,发现原来远不是这么回事,而网上更深入的文章却少之又少。 我们由浅到深吧,先看看相对表象的东西,即前台Ajax相关的JavaScript代码部分。之所以说相对肤浅和表象,是因为这些资料很多网友已经撰文解读过。 凡要使用AjaxPro,我们大致要做以下工作: 1) 在项目中引用AjaxPro.dll(我用的是AjaxPro.2.dll,版本),并在web.config中httpHandlers配置节添加: add verb=POST,GET path=ajaxpro/*.ashx type=AjaxPro.AjaxHandlerFactory, AjaxPro.2/ 2) 在要使用Ajax功能的页面.cs文件上注册Ajax,例如: ??????? protected void Page_Load(object sender, EventArgs e) ??????? { ??????????? // 注册Ajax ??????????? AjaxPro.Utility.RegisterTypeForAjax(typeof(Default)); ??????? } 3) 在.cs文件中声明可以被Ajax调用的函数(或属性),如: ??????? [AjaxPro.AjaxMethod] ??????? public string GetChild(string parentId) ??????? {??????????? ??????????? return return value from .cs file; ??????? } 4) 在.aspx文件中用JavaScript调用Ajax,如: ??????????? script language=javascript?????????? ??????????????????? var items = DynLoadTree.Default.GetChild( aa ).value; // 通过Ajax调用后台代码 ??????????????????? alert(items); ??????????? /script 做好以上四步,我们就基本实现了Ajax页面不刷新的功能了。那么它是怎样通过xmlhttp与服务器通讯的呢?运行后我们可以看到HTML文件的源代码多了几行.ashx文件的引用: script type=text/javascript src=/ajaxpro/prototype.ashx/script script type=text/javascript src=/ajaxpro/core.ashx/script script type=text/javascript src=/ajaxpro/converter.ashx/script script type=text/javascript src=/ajaxpro/DynLoadTree.Default,DynLoadTree.ashx/script ?? 实际上这些.ashx就是在上面第2步AjaxPro.Utility.RegisterTypeForAjax注册Ajax时自动将这些引用添加到Html文档输出的。那这些文件是什么文件呢?再看第1步中在web.config中添加到httpHandlers节中的配置,它告诉系统凡是收到ajaxpro路径下已经ashx为后缀的请求就全部交给AjaxPro.AjaxHandlerFactory这个类来处理,而这些ashx经过处理后返回的就是一些JavaScript文件,和普通的js引用没有实质区别。 我们首先看看“DynLoadTree.Default,DynLoadTree.ashx”的内容: if(typeof DynLoadTree == undefined) DynLoadTree={}; DynLoadTree.Default_class = function() {}; Object.extend(DynLoadTree.Default_totype, Object.extend(new AjaxPro.Aj

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档