如何使用Ajax

要完整实现一个Ajax同步调用和局部刷新,通常需要以下几个步骤:

1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象

2.创建一个新的HTTP请求,并指定该HTTP请求的方法,URL

3.设置响应HTTP请求状态变化的函数

 

话不多说,代码伺候:

创建XMLHttpRequest对象:

// 封装通用的XMLHttpRequest对象 ,兼容各个版本 
	function createXHR(){
		// 判断浏览器是否将XMLHttpRequest最为本地对象实现,正对IE7,firefox,opera等
		if(typeof XMLHttpRequest != 'undefine'){
			// code for IE7+, Firefox, Chrome, Opera, Safari
			return new XMLHttpRequest();
		}else if(typeof ActiveXObject != 'undefine'){
			// code for IE6,IE5...
			var xmlArr = ['Microsoft.XMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP.2.0'];
			var len = xmlArr.length, xhr;
			for(var i=0;i<len;i++){
				try{
					// 创建XMLHttpRequest对象
					xhr = new ActiveXObject(xmlArr[i]);
					break;
				}catch(ex){

				}
			}
			return xhr;

		}else{
			throw new Error('No XHR Ojbect available.');
		}
	}

 

 

也可以简写:

function crateXHR(){
			var xmlHttp;
			if(windown.XMLHttpRequest){
				//code for IE7+, Firefox, Chrome,Opera, Safari
				xmlHttp = new XMLHttpRequest();
			}else{
				// code for IE6, IE5
				xmlHttp = new ActiveXObject('Microsoft.XMLHttp');
			}
		}

 完整代码:

 

<html>
<head>
	
	<title>ajax</title>
</head>

<body>
	
<div id="banner" class="banner">
</div>

<script type="text/javascript">
	// 封装通用的XMLHttpRequest对象 ,兼容各个版本 
	function createXHR(){
		// 判断浏览器是否将XMLHttpRequest最为本地对象实现,正对IE7,firefox,opera等
		if(typeof XMLHttpRequest != 'undefine'){
			// code for IE7+, Firefox, Chrome, Opera, Safari
			return new XMLHttpRequest();
		}else if(typeof ActiveXObject != 'undefine'){
			// code for IE6,IE5...
			var xmlArr = ['Microsoft.XMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP.2.0'];
			var len = xmlArr.length, xhr;
			for(var i=0;i<len;i++){
				try{
					// 创建XMLHttpRequest对象
					xhr = new ActiveXObject(xmlArr[i]);
					break;
				}catch(ex){

				}
			}
			return xhr;

		}else{
			throw new Error('No XHR Ojbect available.');
		}
	}

	// XMLHTTPRequest对象
	var xhr = createXHR(), data =null;


	// 响应XMLHttpRequest对象状态变化的函数,onreadystatechange在readstatechagne属性发生改变时触发
	xhr.onreadystatechange = function(){
		if(xhr.readystate==4){
			if((xhr.status>=200 && xhr.status<300) || xhr.status === 304){
				// 获得服务器返回的数据
				// console.log(xhr.responseText);
				// responseText返回的数据是string类型
				// data = eval("("+xhr.responseText+")");
				data = JSON.parse(xhr.responseText)

				// 渲染数据到页面
				renderDataToDom();
			}
		}
	}

	// 创建请求  
	// open(method,url,async)方法有三个参数
	// method 请求方式,url 要请求的文件在服务器上的位置 async 请求是同步还是异步    
	xhr.open('get','./server.json',true);   
	// 发送请求
	xhr.send(null);
	// xhr.send({user:'zhangsan',id:6})
	// 设置http头部信息
	// xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');


	function renderDataToDom(){
 
	}


</script>

</body>
</html>

 

  

 

 

 

 

posted @ 2020-04-21 16:14  本人小白  阅读(842)  评论(0编辑  收藏  举报