asp.net ajax 简单实例

本文介绍了一个简单的Ajax实例,通过纯手工编写的方式实现了AJAX引擎。该实例能够在页面不刷新的情况下验证用户名是否已被注册。

作者:王宇

为大家写了一个简单的ajax制作实例,纯手工编写AJAX引擎

大家要是有什么问题,给我发Email:warensoft@foxmail.com 

 如果想了解更多关于DotNet方面的技术资料,文章以及视频,请到本团队的主页:www.warensoft.cn

实例需求:
利用Ajax技术实现一个页面不刷新的,并且验证一个用户名是否被注册过的过程。
要求:
在页面中添加一个文本框标签用于输入用户名,添加一个按钮用于提交用户数据。验证的结果被直接打印在页面上。
操作步骤如下:
1)打开Visual Studio(笔者使用的是Visual Studio2008 Beta2,因为VS2008在页面的布局方面更好控制),建立一个网站,如图2-5所示。
图2-5新建立一个网站
项目建立好之后,大家会看到VS2008中基本上已经将Express Web的功能集成,可以将HTML的设计视图和HTML的代码进行上下分开显示。如图2-6所示。
图2-6 VS2008的编辑窗口
2)在VS2008工具箱的HTML栏中添加一个 控件及 控件。如图2-7所示。
图2-7 添加表单控件
3) 在<Head></Head>中加入<script type ="text/javascript"></script>标签,以便进行 Ajax引擎的编写,并在基本定义一个XMLHttpRequest对象,但是并不进行初始化操作。如图2-8所示。
图 2-8 添加新标签
3)定义两个函数 Validation()及OnMessageBack(),前者用于初始化XMLHttpRequest对象,后者则在服务器的数据返回被调用。在Validation()函数中加入如下Javascript代码:
// 实例化XMLHttpRequest对象
        xmlhttp =new ActiveXObject ("Microsoft.XMLHTTP");
        // 找到名为 Text1 的文本框
        var name=document .getElementById ("Text1");
        // 利用Open方法向指定URL
        // 查询字符串 name 将文本框中的数据传送到目标页面
        xmlhttp .open("Post","default.aspx?name="+name.value);
        // 设置当服务器响应返回时用于处理响应的函数名
        xmlhttp .onreadystatechange=OnMessageBack;
        // 送发请求
        xmlhttp .send(null);
代码添加完毕后,Html页面内容如图2-9所示。
图2-9 添加代码
4)添加OnMessageBack()函数的内容。代码如下:
function OnMessageBack()
    {
        // 判断请求状态及HTTP状态是否都能满足条件
        if (xmlhttp .readystate==4&&xmlhttp .status==200)
        {
            // 将返回的文本打印到页面上
            document .write (xmlhttp .responsetext);
        }
    }
代码添加完毕后,Html页面内容如图2-9所示。
图2-10添加代码
5) 下面为Button1添加事件代码,将其标签修改为
< input id="Button1" type="button" onclick ="Validation()" value="button" />
6)页面中的 Ajax引擎已经编写完毕。在图2-10所示的第18行代码中,大家可以看到该用户名是通过一个名为“name”的查询字符串进行传递的,该查询字符串传递到服务器后需要进行后台处理,因此,要对“Default.aspx.cs”中的Page_Load方法添加一些ADO.NET代码。这里的数据库使用的是“Northwind”示例数据库。如图2-11所示。
图 2-11 后台C#代码
这里要注意,当服务器利用 Response.Write()方法向客户端发出响应后,客户端的Ajax引擎就截获该响应流,并在我们事先定义的“OnMessageBack()”方法中进行处理。
7)下面按 F5进行调试。在文本框中输入“ALFKI”,点击按钮,页面中会显示“该用户名已经被占用,请使用其他用户名!”,如图2-12所示。
图 2-12 测试一
再在文本框中输入一个用户名“ ABC”,会显示“该用户名可以使用”,如图2-13所示。
图 2-13 测试二
但是,在第二次测试时,大家会奇怪的发现页面出现了两组相同的表单。这是因为我们目前还没有 
 
ajax技术,无刷新技术 导读:ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAXASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,以及调用AuthenticationService和ProfileService,还有页面错误处理等。 ASP.NET AJAX入门系列(3):使用ScriptManagerProxy控件 导读:在ASP.NET AJAX中,由于一个ASPX页面上只能有一个ScriptManager控件,所以在有母版页的情况下,如果需要在Master-Page和Content-Page中需要引入不同的脚本时,这就需要在Content-page中使用ScriptManagerProxy,而不是ScriptManager,ScriptManager 和 ScriptManagerProxy 是两个非常相似的控件。 ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一) 导读:UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。通过本文来学习一下UpdatePanel简单的使用方法(第一篇)。 ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二) 导读:UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。通过本文来学习一下UpdatePanel其他的一些使用方法(第二篇)。 ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍 导读:在ASP.NET AJAX Beta2中,UpdateProgress控件已经从“增值”CTP中移到了ASP.NET AJAX核心中,本文简单介绍一些它的基本用法,翻译自官方文档。 ASP.NET AJAX入门系列(7):使用客户端脚本对UpdateProgress编程 导读:在本篇文章中,我们将通过编写JavaScript来使用客户端行为扩展UpdateProgress控件,客户端代码将使用ASP.NET AJAX Library中的PageRequestManager,在UpdateProgress控件中,将添加一个Button,来允许用户取消异步更新,并且使用客户端脚本来显示或者隐藏进度信息,翻译自官方文档。 ASP.NET AJAX入门系列(8):自定义异常处理 导读:在UpdatePanel控件异步更新时,如果有错误发生,默认情况下会弹出一个Alert对话框显示出错误信息,这对用户来说是不友好的,本文看一下如何在服务端和客户端脚本中自定义异常处理,翻译自官方文档。 ASP.NET AJAX入门系列(9):在母版页中使用UpdatePanel 导读:本文简单介绍一下在母版页中使用UpdatePanel控件,翻译自官方文档。 ASP.NET AJAX入门系列(10):Timer控件简单使用 导读:本文主要通过一个简单示例,让Web页面在一定的时间间隔内局部刷新,来学习一下ASP.NET AJAX中的服务端Timer控件的简单使用。 ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件 导读:本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档 作者:TerryLee 出处:http://terrylee.cnblogs.com
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值