如何使用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>

 

  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM