展会信息港展会大全

ASP.NET中AJAX编程开发指南
来源:互联网   发布日期:2016-01-27 15:30:06   浏览:2061次  

导读:AJAX介绍其实AJAX应用的核心就是XMLHttpRequest,通过现象看本质,即使使用微软的AJAX服务器控件最终也是需要这些的,只不过使用微软 AJAX服务器控件开发AJAX应用时我们不需要关心JS脚本的实现,只需关心业务逻 ...

AJAX介绍

其实AJAX应用的核心就是XMLHttpRequest,通过现象看本质,即使使用微软的AJAX服务器控件最终也是需要这些的,只不过使用微软 AJAX服务器控件开发AJAX应用时我们不需要关心JS脚本的实现,只需关心业务逻辑就可以了,因而可以简化开发和提高开发速度。AJAX的基础是 XHTML、CSS、DOM、JavaScript、XML及XMLHttpRequest。

正确使用AJAX技术可以改善用户体验,是用户与服务器的交互更流畅,某些情况下还能减少服务器流量。在以前AJAX只是作为一种比较炫的技术为一些大型网站所使用,现今这个比云计算还要流行了,至少云计算更多地还是停留在人们的概念里,而AJAX确确实实应用在WEB开发当中了。WEB开发人员的招聘都是言必精通AJAX技术。

下面分别讲讲在ASP.NET开发中可以供选择的开发AJAX应用的方式:

采用纯JavaScript实现

在武侠小说中绝顶高手飞花摘叶都可以伤人,在WEB开发领域真正的高手也可以无需借助任何其它库就可以开发出AJAX应用。不适用任何第三方库开发 AJAX应用就需要自己区分浏览器来实例化XMLHttpRequest对象实例,下面的代码是一个简单的调用AJAX的代码:

view plaincopy to clipboardprint?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>获取服务器时间的例子</title>

<mce:script language="javascript" type="text/javascript"><!--

var request=false;

//实例化XMLHttpRequest

function createXMLHttpRequest()

{

try

{

//下面的方法有可能抛出异常,表示当前浏览器不支持此方法

request=new ActiveXObject("Msxml2.XMLHTTP");

}

catch(e1)//当通过上面的方法实例XMLHttpRequest发生异常

{

try

{

//下面的方法有可能抛出异常,表示当前浏览器不支持此方法

request=new ActiveXObject("Microsoft.XMLHTTP");

}

catch(e2)//当通过上面的方法实例XMLHttpRequest发生异常

{

request=false;

}

}

//当上面的方法都不能实例化XMLHttpRequest时,表示非IE浏览器

if(!request&&typeof XMLHttpRequest!= undefined )

{

//非IE浏览器实例化XMLHttpRequest的方法

request=new XMLHttpRequest();

}

}

//发送客户端请求的方法

function getServerTime(format)

{

//调用上面的方法实例化XMLHttpRequest

createXMLHttpRequest();

//要请求的URL地址,注意escape是javascript中的方法

//用于对特殊字符进行转义

var url="ServerTime.aspx?format="+escape(format);

//alert(url);//可以通过这种方法查看服务器的返回结果

//通过GET方式打开请求,第三个参数true表示异步发送请求,false则为同步

request.open("GET",url,true);

//当request的等待状态发生变化时要执行的客户端方法

request.onreadystatechange=update;//update是客户端的javascript方法

//因为在请求的url中已经附带了参数,所以这里的参数是null

//表示不再发送额外的数据

request.send(null);

}

//当接收到服务器的响应之后执行的客户端方法

function update()

{

if(request.readyState==4)

{

//alert(request.responseText);//查看服务器响应结果

document.getElementById("time").innerHTML=request.responseText;

}

}

// --></mce:script>

</head>

<body>

<table border="0">

<tr>

<td>服务器时间</td><td><div id="time"></div& gt;</td>

</tr>

<tr>

<td><input type="button" value="完整时间" onclick="javascript:void getServerTime( yyyy-mm-dd hh:mm:ss );"/& gt;</td><td><input type="button" value="年月日" onclick="javascript:void getServerTime( yyyy-MM-dd );"/></td>

</tr>

<tr>

<td><input type="button" value="时分秒" onclick="javascript:void getServerTime( hh:mm:ss );" /></td& gt;<td><input type="button" value="月份日期"onclick="javascript:void getServerTime( mm-dd );" /></td>

</tr>

</table>

</body>

</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>获取服务器时间的例子</title>

<mce:script language="javascript" type="text/javascript"><!--

var request=false;

//实例化XMLHttpRequest

function createXMLHttpRequest()

{

try

{

//下面的方法有可能抛出异常,表示当前浏览器不支持此方法

request=new ActiveXObject("Msxml2.XMLHTTP");

}

catch(e1)//当通过上面的方法实例XMLHttpRequest发生异常

{

try

{

//下面的方法有可能抛出异常,表示当前浏览器不支持此方法

request=new ActiveXObject("Microsoft.XMLHTTP");

}

catch(e2)//当通过上面的方法实例XMLHttpRequest发生异常

{

request=false;

}

}

//当上面的方法都不能实例化XMLHttpRequest时,表示非IE浏览器

if(!request&&typeof XMLHttpRequest!= undefined )

{

//非IE浏览器实例化XMLHttpRequest的方法

request=new XMLHttpRequest();

}

}

//发送客户端请求的方法

function getServerTime(format)

{

//调用上面的方法实例化XMLHttpRequest

createXMLHttpRequest();

//要请求的URL地址,注意escape是javascript中的方法

//用于对特殊字符进行转义

var url="ServerTime.aspx?format="+escape(format);

//alert(url);//可以通过这种方法查看服务器的返回结果

//通过GET方式打开请求,第三个参数true表示异步发送请求,false则为同步

request.open("GET",url,true);

//当request的等待状态发生变化时要执行的客户端方法

request.onreadystatechange=update;//update是客户端的javascript方法

//因为在请求的url中已经附带了参数,所以这里的参数是null

//表示不再发送额外的数据

request.send(null);

}

//当接收到服务器的响应之后执行的客户端方法

function update()

{

if(request.readyState==4)

{

//alert(request.responseText);//查看服务器响应结果

document.getElementById("time").innerHTML=request.responseText;

}

}

// --></mce:script>

</head>

<body>

<table border="0">

<tr>

<td>服务器时间</td><td><div id="time"></div& gt;</td>

</tr>

<tr>

<td><input type="button" value="完整时间" onclick="javascript:void getServerTime( yyyy-mm-dd hh:mm:ss );"/& gt;</td><td><input type="button" value="年月日" onclick="javascript:void getServerTime( yyyy-MM-dd );"/></td>

</tr>

<tr>

<td><input type="button" value="时分秒" onclick="javascript:void getServerTime( hh:mm:ss );" /></td& gt;<td><input type="button" value="月份日期"onclick="javascript:void getServerTime( mm-dd );" /></td>

</tr>

</table>

</body>

</html>

注意XMLHttpRequest.readyState共有5种状态,其可能值和对应描述如下:

0:请求未初始化,还没有调用 open()。

1:请求已经建立,但是还没有发送,还没有调用 send()。

2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

3:请求在处理中;通常响应中已有部分数据可用了,没有全部完成。

4:响应已完成;您可以获取并使用服务器的响应了。

从上面的代码中可以看出每次实例化XMLHttpRequest对象都需要判断,一些常用的操作也可以封装一下,利用Prototype这个 JavaScript脚本库就可以轻松做到这一点,实际上早期很多人就用到了Prototype来开发AJAX应用,并且在Prototype中还封装了其它很多通用的方法,大大提高了我们的开发效率。

使用Prototype

在Prototype中提供了一个Ajax对象,这样开发人员就可以直接使用Ajax对象而不必考虑如何判断浏览器类型再决定如何实例化 XMLHttpRequest对象的实例了。下面的代码是使用了Protype之后的代码:

view plaincopy to clipboardprint?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>使用Prototype获取服务器时间的例子</title>

<mce:script type="text/javascript" language="javascript" src="prototype.js" mce_src="prototype.js"></mce:script>

<mce:script language="javascript" type="text/javascript"><!--

function getServerTime(format) {

//要请求的URL地址,注意escape是javascript中的方法

//用于对特殊字符进行转义

var url = "ServerTime.aspx";

var params = "format=" + escape(format);

var ajax = new Ajax.Request(

url,

{

method:get ,

parameters:params,

onComplete:update

}

);

}

//当接收到服务器的响应之后执行的客户端方法

function update(request) {

$("time").innerHTML = request.responseText;

}

// --></mce:script>

</head>

<body>

<table border="0">

<tr>

<td>服务器时间</td><td><div id="time"></div& gt;</td>

</tr>

<tr>

<td><input type="button" value="完整时间" onclick="javascript:void getServerTime( yyyy-mm-dd hh:mm:ss );"/& gt;</td><td><input type="button" value="年月日" onclick="javascript:void getServerTime( yyyy-MM-dd );"/></td>

</tr>

<tr>

<td><input type="button" value="时分秒" onclick="javascript:void getServerTime( hh:mm:ss );" /></td& gt;<td><input type="button" value="月份日期"onclick="javascript:void getServerTime( mm-dd );" /></td>

</tr>

</table>

</body>

</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>使用Prototype获取服务器时间的例子</title>

<mce:script type="text/javascript" language="javascript" src="prototype.js" mce_src="prototype.js"></mce:script>

<mce:script language="javascript" type="text/javascript"><!--

function getServerTime(format) {

//要请求的URL地址,注意escape是javascript中的方法

//用于对特殊字符进行转义

var url = "ServerTime.aspx";

var params = "format=" + escape(format);

var ajax = new Ajax.Request(

url,

{

method:get ,

parameters:params,

onComplete:update

}

);

}

//当接收到服务器的响应之后执行的客户端方法

function update(request) {

$("time").innerHTML = request.responseText;

}

// --></mce:script>

</head>

<body>

<table border="0">

<tr>

<td>服务器时间</td><td><div id="time"></div& gt;</td>

</tr>

<tr>

<td><input type="button" value="完整时间" onclick="javascript:void getServerTime( yyyy-mm-dd hh:mm:ss );"/& gt;</td><td><input type="button" value="年月日" onclick="javascript:void getServerTime( yyyy-MM-dd );"/></td>

</tr>

<tr>

<td><input type="button" value="时分秒" onclick="javascript:void getServerTime( hh:mm:ss );" /></td& gt;<td><input type="button" value="月份日期"onclick="javascript:void getServerTime( mm-dd );" /></td>

</tr>

</table>

</body>

</html>

赞助本站

人工智能实验室

相关热词: AJAX ASP NET

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港