Ajax篇--01 Ajax、缓存问题

Ajax篇--01 Ajax

1、Ajax是什么?(asynchrous javascript and xml)

是一种用来改善用户体验的技术,其本质是利用游览器提供的一个特殊对象(XMLHttpRequest,也可称之为ajax对象)向服务器发送异步请求。服务器返回部分数据(通常不需要返回完整页面),游览器利用这些数据对当前页面做部分更新,整个过程,页面无刷新,不打断用户的操作。

注:异步请求是在发送请求的同时,游览器不会销毁当前页面,用户仍然可以对当前页面做其他操作。

 

2.如何获得Ajax对象?

//获得ajax对象
function getXhr(){
	var xhr=null;
	if(window.XMLHttpRequest){
		//非IE游览器
		xhr=new XMLHttpRequest();
	}else{
		xhr=new ActiveXObject("Microsoft.XMLHttp");
	}
	return xhr;
}

3.Ajax对象的几个重要属性?

a.onreadystatechange:用来绑定一个事件处理函数,用来处理readystatechange事件。

注:当ajax对象的readystate属性值发生了任何改变(比如从0变成了1),就会产生readystatechange事件。

b.readyState:有五个值(0,1,2,3,4),表示ajax对象与服务器通信的状态。其中,当值为4时,表示ajax对象已经获得了服务器返回的所有的数据。

c.responseText:获得服务器返回的文本数据

d.responseXML:获得服务器返回的xml数据

e.status:获得状态码

 

4.编程步骤(以一个注册为例)

 register.jsp

<%@ page contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Insert title here</title>
	<script type="text/javascript" src="js/ajax.js"></script>
	<script type="text/javascript">
		function check_adminCode() {
			//step1:先获得ajax对象
			var xhr=getXhr();
			//step2:发送请求;
			xhr.open('get','check_admin.do?adminCode='+$F('adminCode'),true);
			xhr.onreadystatechange=function(){
				//step4:处理服务器返回的数据
				if(xhr.readyState==4){
					//获得服务器返回的数据
					var text=xhr.responseText;
					//更新页面
					$('adminCode_msg').innerHTML=text;
				}
			};
			xhr.send(null);
		}
	</script>
</head>
<body style="font-size:30px;">
	<form action="" method="post">
		账号:<input name="adminCode" id="adminCode" οnblur="check_adminCode();"/><span id="adminCode_msg"></span><br>
		密码:<input name="pwd" type="password"/><br>
		<input type="submit" value="确定">
	</form>
</body>
</html>

ajax.js

//依据id查找节点
function $(id){
	return document.getElementById(id);
}
//依据id查找节点,然后返回节点的value
function $F(id){
	return $(id).value;
}
//获得ajax对象
function getXhr(){
	var xhr=null;
	if(window.XMLHttpRequest){
		//非IE游览器
		xhr=new XMLHttpRequest();
	}else{
		xhr=new ActiveXObject("Microsoft.XMLHttp");
	}
	return xhr;
}

ActionServlet.java

//依据id查找节点
function $(id){
	return document.getElementById(id);
}
//依据id查找节点,然后返回节点的value
function $F(id){
	return $(id).value;
}
//获得ajax对象
function getXhr(){
	var xhr=null;
	if(window.XMLHttpRequest){
		//非IE游览器
		xhr=new XMLHttpRequest();
	}else{
		xhr=new ActiveXObject("Microsoft.XMLHttp");
	}
	return xhr;
}

5.缓存问题

1)什么是缓存问题?

当使用IE游览器发送get请求时,游览器会查看请求地址是否访问过,如果访问过,则不再发送新的请求,而是显示第一次访问的结果。(也就是说,会将第一次的请求结果缓存下来)。

2)如何解决?

在请求地址后面添加一个随机数

 6.以post方式提交 

<%@ page contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Insert title here</title>
	<script type="text/javascript" src="js/ajax.js"></script>
	<script type="text/javascript">
		function check_adminCode() {
			//step1:先获得ajax对象
			var xhr=getXhr();
			//step2:发送请求;
			xhr.open('post','check_admin.do',true);
			xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
			xhr.onreadystatechange=function(){
				//step4:处理服务器返回的数据
				if(xhr.readyState==4){
					//获得服务器返回的数据
					var text=xhr.responseText;
					//更新页面
					$('adminCode_msg').innerHTML=text;
				}
			};
			xhr.send('adminCode='+$F('adminCode'));
		}
	</script>
</head>
<body style="font-size:30px;">
	<form action="" method="post">
		账号:<input name="adminCode" id="adminCode" οnblur="check_adminCode();"/><span id="adminCode_msg"></span><br>
		密码:<input name="pwd" type="password"/><br>
		<input type="submit" value="确定">
	</form>
</body>
</html>

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值