1,Ajax是什么

Ajax,异步JavaScriptXML,是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,你可以创建接近本地桌面应用的,直接的、高可用的、更丰富的、更动态的Web用户接口界面。

Ajax处理过程

一个Ajax交互从一个称为XMLHttpRequestJavaScript对象开始。如同名字所暗示的,它允许一个客户端脚本来执行HTTP请求,并且将会解析一个XML格式的服务器响应。Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法(GETPOST)来处理请求,并将目标URL设置到XMLHttpRequest对象上。

现在,记住Ajax如何首先处于异步处理状态?当你发送HTTP请求,你不希望浏览器挂起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户的界面交互,并在服务器响应真正到达后处理它们。要完成它,你可以向XMLHttpRequest注册一个回调函数,并异步地派发XMLHttpRequest请求。控制权马上就被返回到浏览器,当服务器响应到达时,回调函数将会被调用。

Java Web服务器上,到达的请求与任何其它HttpServletRequest一样。在解析请求参数后,servlet执行必需的应用逻辑,将响应序列化到XML中,并将它写回HttpServletResponse

来自http://tech.ccidnet.com/art/297/20060220/432947_1.html

2,关于Ajax.net

Ajax.net 做为Ajax技术在dotNet 框架下的实现,作者Michael Schwarz采取了一种封装效果相当棒的技术:将客户端处理XML、事件调用方式都封装在2Javascript文件中(AjaxPro.prototype.js AjaxPro.core.js),同时将这2个重要文件以资源的形式编译于dll中,在处理客户端请求其自定义的.ashx文件时,返回这两个文件。所以我们在使用Ajax.net时需要在Web.config中添加如下httpHandlersAjaxPro.AjaxHandlerFactory来处理.ashx文件:

<httpHandlers>

<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>

</httpHandlers>

在此基础上,Ajax.net开始对要求其处理的方法进行封装,以便在客户端通过Javascript来调用。首先在用户必须调用的另一个ashx文件即converter.ashx中做了方法的封装,当然要支持任意多数量的参数及返回值的处理,然后就是对于服务端的逻辑处理方法所在类的封装处理。

3,开始使用Ajax.net

说了这么多题外话,我们现在开始进入正题。

A:获取Ajax.net 可以到 http://www.schwarz-interactive.de/ 下载(目前最新版6.4.15.1.)。

B:解压zip并在需要使用的项目中添加对dll的引用(其中AjaxPro.dlldotnet1.1版,AjaxPro.2.dll 2.0版)

C:如同上面所说,在web.config中添加对ashx的处理

D:在服务端添加Ajax.net要处理的方法,假如我们要提供的服务是返回用户输入的字符的MD5校验码,那么我们首先要做的是给这个方法加入需要Ajax.net处理使客户端可以直接调用的属性[AjaxPro.AjaxMethod]如下:

[AjaxPro.AjaxMethod]

public string Md5Hash(string sSou)

{

string sResult  ="";

byte[] byBuffer =  System.Text.Encoding.UTF8 .GetBytes(sSou);

System.Security.Cryptography.MD5CryptoServiceProvider  md = new System.Security.Cryptography.MD5CryptoServiceProvider();

byte[] result = md.ComputeHash(byBuffer);

for(int i=0; i< result.GetLength(0); i++)

{

sResult += result[i].ToString("X2");

}

return sResult;

}

然后在Page_Load中注册此类

private void Page_Load(object sender, System.EventArgs e)

{

AjaxPro.Utility.RegisterTypeForAjax

(typeof(WebForm1));

}E

:在客户端调用方法:

<script type="text/javascript">

function getMd5(a)

{

var c = TAjax.WebForm1.Md5Hash(a);

alert(c.value);

}

</script>

<input type="text" id="source" name="source" >

<input type="button" name="sub" οnclick="getMd5()" value="提交">

当然这里Tajax.WebForm1就是实现类的全名了(包括namespace.

这样一个简单应用就算完成了,怎么样,是不是简单的很?在这么简单的使用了Ajax.net后你是不是和我一样觉得不满足,好像还有一些工作可以做?对了,接下来我们将继续深度使用并实现无aspx文件的逻辑层和表现层的彻底分离。

4,应用Ajax.netAsp.net中实现无aspx文件应用,彻底分离逻辑层和表现层

Asp.net中居然没有aspx文件,要如何实现呢?我不知道你想过没有,我反正觉得这是个艰巨的任务;因为aspx文件做为一个桥梁连接了前台和后台,一个runat=server为我们做了太多的事情,我们自己实现也不是完全不可以,不过费尽周折的意义可能并不大;说到意义——这样做的意义我想不用我说,大家自己想想吧,呵呵。闲话少絮。我们接着进入正题。

通过前面的描述,我想大家一定可以猜到关键点。对了,就是那几个js,我们启动程序,查看源文件,奥妙就在这里:

<script type="text/javascript" src="/TAjax/ajaxpro/prototype.ashx"></script>

<script type="text/javascript" src="/TAjax/ajaxpro/core.ashx"></script>

<script type="text/javascript" src="/TAjax/ajaxpro/converter.ashx"></script>

<script type="text/javascript" src="/TAjax/ajaxpro/TAjax.WebForm1,TAjax.ashx"></script>

前面3个文件我就不在多说,前面已经说过,我们只看最后一个,那不正是Ajax.net对我们服务端类的封装吗?

addNamespace("TAjax");

TAjax.WebForm1_class = Class.create();

Object.extend(TAjax.WebForm1_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {

Md5Hash: function(sSou) {

return this.invoke("Md5Hash", {"sSou":sSou}, this.Md5Hash.getArguments().slice(1));

},

initialize: function() {

this.url = '/TAjax/ajaxpro/TAjax.WebForm1,TAjax.ashx';

}

}));

TAjax.WebForm1 = new TAjax.WebForm1_class();

既然原理明白了,分离就简单了,参照上一部份,我们的步骤从D开始改变

D:新建一个类Admin,将WebForm1.aspx.cs中的代码拿过来。

E:在客户端调用方法:

新建一个htm文件include.htm,将前述四行调用放在这里

新建一个htm文件test.htm,内容当然就是前面的客户端表示层。重要的一点就是要添加一个iframe如下:

<iframe name="include" marginwidth=0 marginheight=0  src="include.htm" frameborder=0></iframe>

同样,修改调用为

<script type="text/javascript">

function getMd5(a)

{

var c = include.TAjax.Admin.Md5Hash(a);

alert(c.value);

}

</script>

扩展:如果多处调用而且调用方法较长,你当然可以再对应每个业务类做个js文件,将其中的调用放在一起。

转载于:https://www.cnblogs.com/gujianxin/archive/2006/04/19/379182.html

应用Ajax.net在Asp.net中实现无aspx文件应用相关推荐

  1. ASP.NET中App_Code,App_Data等文件夹的作用

    ASP.NET中App_Code,App_Data等文件夹的作用 1. Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需要引用的任何其他代码的可部署程 序集.该目录中存在的任何.dl ...

  2. ASP.NET中使用Global.asax文件

    转:http://www.cnblogs.com/ly5201314/archive/2008/09/23/1296868.html ASP.NET中使用Global.asax文件 Global.as ...

  3. ASP.NET中App_Code,App_Data等文件夹的作用转

    1. Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需要引用的任何其他代码的可部署程序集.该目录中存在的任何.dll文件将自动地链接到应用程序. 2. App_Browser文件夹 ...

  4. Asp.net 中使用单独类文件

    一个单独的类文件,在ASP.NET 中不可直接使用.必须从"网站"->添加新项(如果新编写),或添加现有项(已有此文件).将文件添加至项目中方可使用.直接拷贝到网站目录中是不 ...

  5. 学习:ASP.NET中App_Code,App_Data等文件夹的作用(转)

    1.  Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需要引用的任何其他代码的可部署程序集.该目录中存在的任何.dll文  件将自动地链接到应用程序. 2.  App_Browser ...

  6. Asp.net中关于上传文件的各项基本操作

    在常见的B/S模式下企业级架构中上传文件是一个常见业务操作.在.NET 1.1版本是只有对应的客户端HTML版本的Input<Type="File">,在.NET2.0 ...

  7. 在ASP.NET中使用Global.asax文件

    文章关键字:ASP.Net,应用层,模块 概述 Global.asax 位于应用程序根目录下.虽然 Visual Studio .NET 会自动插入这个文件到所有的 ASP.NET 项目中,但是它实际 ...

  8. ASP.NET中自动生成XML文件并通过XSLT显示在网页中的方法

    XML是一种很方便的描述数据的方法,其格式也比较接近HTML,因此就有了想把XML直接通过网页的形式显示在浏览器中的想法.但是直接打开XML文件,浏览器是无法解析的,只是把文档的结构原封不动地呈现出来 ...

  9. html中aspx的cs文件是css吗,在asp.net 中怎么在.aspx.cs的文件里写代码来改变页面的颜色...

    改颜色: .aspx : %@ Page Language=C# AutoEventWireup=true CodeFile=SessionTest.aspx.cs Inherits=SessionT ...

最新文章

  1. 小程序云开发,判断数据库表的两个字段匹配 云开发数据库匹配之 and 和 or 的配合使用
  2. 你的4nm安卓旗舰芯片来了!骁龙8 Gen 1:支持8K HDR,功耗降30%,雷军:小米12首发...
  3. LSTM之父再称ResNet、GAN等五大网络都有他的功劳,网友却说:自负大于引用数
  4. iOS9 HTTP 不能正常使用的解决办法
  5. 用原生javascript做的一个打地鼠的小游戏
  6. 【SQL】日期型函数
  7. Win7/Win8/Win8.1下配置apache+php运行缓慢问题解决方法
  8. .net core中使用autofac进行IOC
  9. 第四季-专题19-I2C驱动程序设计
  10. 漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)
  11. hp1008win7驱动问题
  12. Excel将数据内容导出为数据库DBF文件的操作
  13. linux下nginx和redis安装笔记
  14. HTML5之HTML+CSS3代码(二)
  15. 导出excel.支持在线打开保存
  16. css 各个方向渐变(从左到右、从上到下、从左上角到右下角)
  17. 《JSP网站开发技术》教学大纲
  18. NYOJ 541 最强DE 战斗力(大数水)
  19. ElasticSearch - 玩转搜索之花式查询
  20. 占Android的发展

热门文章

  1. 掌门教育余腾、吴佳峻,水滴公司邵文等登榜2020胡润Under30s创业领袖
  2. Windows7+CentOS7 启动项丢失问题解决
  3. 饥荒linux服务器 mod,Linux饥荒服务器搭建[地上+地下][Docker构建]
  4. 10种重新定义人机交互的交互方式
  5. 阿里巴巴CTO独家自述:CTO就是要给CEO扫清障碍和风险
  6. 新疆苹果服务器不稳定,苹果手机进入新疆政务服务一直闪退怎么回事?
  7. sql怎么两个表关联查询
  8. 为什么在线个人品牌对企业家至关重要
  9. 怎么输入文字生成绘画图?分享一份文字生成绘画教程
  10. chmod 命令参数