Loading

原生JS的Ajax技术

1.同步和异步

同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待  卡死状态

异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死

 

2.ajax运行原理

页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到 服务器端,

在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后,

ajax引擎会监听到ajax的状态改变,触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面功能。

(我觉得ajax起到一个缓冲的作用,就像io系统中的通道,会接受并传递客户端的请求,此时客户端就不需要等待响应了)

 

以下是原生js的ajax演示:

点击异步访问服务器端,过3秒后会在页面显示一个随机数,在此期间,客户端并没有卡死,可以点击test按钮

点击同步访问服务器端,过3秒后会在页面显示一个随机数,在此期间,客户端卡死,不可以点击test按钮

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	function fun1(){
		//1.创建ajax引擎对象
		var xmlHttp=new XMLHttpRequest();
		//2.绑定监听   监听服务器是否已经返回相应数据
		xmlHttp.onreadystatechange=function(){
			// 当请求已完成,响应已就绪 并且正确返回请求资源时。
			//ajax引擎才会接收相应的数据
			if(xmlHttp.readyState==4&&xmlHttp.status==200 ){
				//5.接受相应数据
				var res=xmlHttp.responseText;
				document.getElementById("span1").innerHTML=res;
			}	
		}
		//3.绑定地址
		// 1)请求资源的方式  2)访问的web资源的地址  3)是否异步
		xmlHttp.open("GET","/WEB22/ajaxServlet",true);
		//4.发送请求
		xmlHttp.send();
	}
	
	function fun2(){
		//1.创建ajax引擎对象
		var xmlHttp=new XMLHttpRequest();
		//2.绑定监听   监听服务器是否已经返回相应数据
		xmlHttp.onreadystatechange=function(){
			// 当请求已完成,响应已就绪 并且正确返回请求资源时。
			//ajax引擎才会接收相应的数据
			if(xmlHttp.readyState==4&&xmlHttp.status==200 ){
				//5.接受相应数据
				var res=xmlHttp.responseText;
				document.getElementById("span2").innerHTML=res;
			}	
		}
		//3.绑定地址
		// 1)请求资源的方式  2)访问的web资源的地址  3)是否异步
		xmlHttp.open("GET","/WEB22/ajaxServlet",false);
		//4.发送请求
		xmlHttp.send();
		
		
	}
</script>

</head>
<body>
	<input type="button" value="异步访问服务器端" onclick="fun1()" ><span id="span1"></span><br>
	<input type="button" value="同步访问服务器端" onclick="fun2()" ><span id="span2"></span><br>
	<input type="button" value="test" onclick="alert()" >
</body>
</html>

 

 

 

 

 

 

 

posted @ 2019-04-07 21:11  青岑  阅读(266)  评论(4编辑  收藏  举报