使用XMLHttpRequest對象來進行AJAX的異步數據交互

	//使用XMLHttpRequest對象來進行AJAX的異步數據交互,5個步驟如下: 
	var xmlHttp; 
	function verify() { 
		//0.使用dom的方式獲取文本框中的值。例如:document.getElementById("標籤對應的Id的名稱").value。 
		var userName = document.getElementById("userName").value; 

		//1.創建XMLHttpRequest對象,方法體外部定義為全局變量,見代碼第一行 
		// 不同瀏覽器建立這個對象代碼書寫有差異 
		if (window.XMLHttpRequest) { 
			// 針對FireFox,Mozilla,Opera,Safari,IE7,IE8 
			xmlHttp = new XMLHttpRequest(); 

			// 下面二行代碼是針對Mozilla瀏覽器某特定版本的BUG進行修正 
			if (xmlHttp.overrideMimeType) { 
				xmlHttp.overrideMimeType("text/xml"); 
			} 
		} else if (window.ActiveXObject) { 
			// 針對IE6,IE5.5,IE5 
			// 下面的數組保存的是可以創建XMLHttpRequest對象的控件名稱 
			// MSXML2.xmlHttp 比 Microsoft.xmlHttp 的版本要新 
			var activexName = ["MSXML2.xmlHttp","Microsoft.xmlHttp"]; 
			for (var i = 0; i < activexName.length(); i++) { 
				try { 
					xmlHttp = new ActiveXObject(activexName[i]); 
					break; 
				} catch (e) { 
					e.Exception(); 
				} 
			} 
		} 

		//創建XMLHttpRequest對象是否成功,給出提示。 
//		if (!xmlHttp) { 
//			alert("XMLHttpRequest對象創建失敗!"); 
//			return; 
//		} else { 
//			alert("XMLHttpRequest對象創建成功!"); 
//			alert("readyState="+xmlHttp.readyState); 
//		} 

		//2.註冊回調函數 
		// 註冊回調函數時只需要函數名,不要加括號 
		// 如果加上括號,就會把函數返回的值註冊上,這是不對的。
		xmlHttp.onreadystatechange = callback; 

		//3.設置連接信息,open(String method,String url,boolean asynch,[String username],[String password]) 
		// 第一個參數表示http的請求方式,支持http所有的請求方式,主要使用get和post 
		// 第二個參數表示請求的url地址,get方式請求的參數也在url中 
		// 第三個參數表示交互方式,true表示異步, false表示同步 
		// 第四和第五個參數表示http認證機制需要的用戶名和密碼,不認證則不需要 

		//3.1 http的請求方式為get 
//		var urlGet = "AJAXservlet?userName=" + userName; 
//		xmlHttp.open("GET",urlGet,true) 

		//3.2 http的請求方式為post 
		var urlPost = "AJAXXMLservlet"; 
		xmlHttp.open("POST",urlPost,true); 
		// post方式要設置請求頭文件
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 

		//4.發送數據,開始和服務器交互數據,send(par) 
		// 同步方式下,send這句代碼會在服務器數據交互回來之後才執行 
		// 異步方式下,send這句代碼會馬上執行 
		
		//4.1 http的請求方式為get 
//		xmlHttp.send(null); 

		//4.2 http的請求方式為post 
		xmlHttp.send("userName=" + userName); 
		} 
		// 回調函數方法體 
		function callback() { 
//			alert("readyState="+xmlHttp.readyState); 

			//5.接收響應數據 
			// 判斷對象的狀態是否交互完成 
			// readyState: 0=未初始化;1=open方法成功調用以後;2=服務器已經響應了客戶端的請求; 
			// 3=交互中,http頭信息已經接收,但應答數據還未接收;4=完成,應答數據接收完成 
			if(xmlHttp.readyState == 4) { 
				// 判斷http的交互是否成功 
				if(xmlHttp.status == 200) { 
					// 獲取服務器返回的數據 
					// 兩種方式獲取,一種是純文本形式responseText,一種是XML形式responseXML 
					// 下面的是純文本形式 
					var responseText = xmlHttp.responseText; 
					var divNode = document.getElementById("result"); 
					divNode.innerHTML = responseText; 

//					// 下面的是XML形式 
//					var xml = xmlHttp.responseXML; 
//					if (xml) { 
//							var responseMassage = massageNodes[0].firstChild.nodeValue; 
//						var massageNodes = xml.getElementsByTagName("massage"); 
//						if (massageNodes.length > 0) { 
//							var divNode = document.getElementById("result"); 
//							divNode.innerHTML = responseMassage; 
//						} else { 
//							alert("XML數據格式錯誤,原始文本內容為:" + xmlHttp.responseText); 
//						} 
//					} else { 
//						alert("XML數據格式錯誤,原始文本內容為:" + xmlHttp.responseText); 
				} 
			} 
		} 
	} 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值