我对Ajax的理解

AJAX即"AsynchronounsJavaScriptandXML"(异步JavaScript和XML),AJAX并非缩写词,而是由JesseJamesGaiie创造的名词,是指一种创建交互式网页应用的网页开发技术。

AJAX最根本的原理就是在不刷新页面的情况下访问服务器处理数据,并根据数据的处理结果按你想要的方式对页面做出及时的更改。

具体流程(三大步):

AJAX向服务器发出请求-->服务器接受请求,处理请求并将处理结果返回-->AJAX收到结果,按照你设定的方式解析结果并更改页面内容。

AJAX的核心是JavaScript对象XMLHttpRequest。该对象在InternetExplorer5中首次引入,它是一种支持异步请求的技术。简而言之,XMLHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

废话不说拉,举一个简单的Ajax使用示例如下:

首先,我创建regist.jsp源代码如下:

<%@pagecontentType="text/html;charset=gb2312"%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">

<title>注册页面</title>

<scripttype="text/javascript"src="js/ajax.js">

</script>

<scripttype='text/javascript'>

<!--

functionmyAlert(strTitle){

varmessage=document.getElementById("myDiv").innerHTML;

varwin1=newZapatec.AlertWindow(message,{

title:strTitle,

modal:true,

width:580,

height:330

});

}

functiondoCheck(){

varf=document.forms[0];

if(f.username.value!=""){

document.getElementById("feedback_info").innerHTML="系统正在处理您的请求,请稍后。";

send_request("POST","checkUsername.jsp?username="

+f.username.value,null,"text",showFeedbackInfo);//第1步:AJAX通过浏览器的内置对象XMLHttpRequest向服务器发出请求。

}else{

document.getElementById("feedback_info").innerHTML="请输入用户名称。";

}

}

functionshowFeedbackInfo(){

if(http_request.readyState==4){//判断对象状态

if(http_request.status==200){//信息已经成功返回,开始处理信息

document.getElementById("feedback_info").innerHTML=http_request.responseText;

}else{//页面不正常

alert("您所请求的页面有异常。");

}

}

}

//-->

</script>

</head>

<body>

<formname="form1"method="post"action="">

<tablestyle="font-size:12px;">

<tr>

<tdwidth="80">用户名:</td>

<td><inputtype="text"name="username"onblur="doCheck()">

</td>

</tr>

<tr>

<tdcolspan="2"><spanid="feedback_info"style="color:#FF0000"></span>

</td>

<tr>

<tr>

<td>一级密码:</td>

<td><inputtype="password"name="pwd"></td>

</tr>

</table>

</form>

</body>

</html>

然后,我创建checkUsername.jsp源代码如下:

<%@pagecontentType="text/html;charset=gb2312"%>

<%

Stringname=request.getParameter("username");//第2步,服务器接受请求

Stringusername=newString(name.getBytes("ISO8859-1"),"gb2312");//2.1,服务器处理请求

if(username.equals(""))

out.println("用户名称["+username+"]低俗不堪!请换一个用户名称注册!");//2.2,服务器将处理结果返回

else

out.println("用户名称["+username+"]符合规范!您可以继续。");

%>

最后,我创建ajax.js源代码如下:

//定义XMLHttpRequest对象实例

varhttp_request=null;

//定义可复用的http请求发送函数

functionsend_request(method,url,content,responseType,callback){//初始化、指定处理函数、发送请求的函数

http_request=null;

//开始初始化XMLHttpRequest对象

if(window.XMLHttpRequest){//Mozilla、在IE7+、firefox浏览器

http_request=newXMLHttpRequest();

if(http_request.overrideMimeType){//设置MiME类别

http_request.overrideMimeType("text/xml");

}

}elseif(window.ActiveXObject){//IE5、6浏览器

try{

http_request=newActiveXObject("Msxml2.XMLHTTP");

}catch(e){

try{

http_request=newActiveXObject("Microsoft.XMLHTTP");

}catch(e){

}

}

}

if(!http_request){//异常,创建对象实例失败

window.alert("不能创建XMLHttpRequest对象实例.");

returnfalse;

}
//以下为第3步:AJAX收到结果,按照你设定的方式解析结果并更改页面内容。

//alert(responseType.toLowerCase());

if(responseType.toLowerCase()=="text"){

//http_request.onreadystatechange=processTextResponse;

http_request.onreadystatechange=callback;

}elseif(responseType.toLowerCase()=="xml"){

//http_request.onreadystatechange=processXMLResponse;

http_request.onreadystatechange=callback;

}else{

window.alert("响应类别参数错误。");

returnfalse;

}

//确定发送请求的方式和URL以及是否异步执行下段代码

if(method.toLowerCase()=="get"){

http_request.open(method,url,true);

}elseif(method.toLowerCase()=="post"){

http_request.open(method,url,true);

http_request.setRequestHeader("Content-Type",

"application/x-www-form-urlencoded");

}else{

window.alert("http请求类别参数错误。");

returnfalse;

}

http_request.send(content);

}

//处理返回文本格式信息的函数

functionprocessTextResponse(){

if(http_request.readyState==4){//判断对象状态

if(http_request.status==200){//信息已经成功返回,开始处理信息

//alert(http_request.responseText);

alert("Text文档响应。");

}else{//页面不正常

alert("您所请求的页面有异常。");

}

}

}

//处理返回的XML格式文档的函数

functionprocessXMLResponse(){

if(http_request.readyState==4){//判断对象状态

if(http_request.status==200){//信息已经成功返回,开始处理信息

//alert(http_request.responseXML);

alert("XML文档响应。");

}else{//页面不正常

alert("您所请求的页面有异常。");

}

}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值