|
//用戶名校驗的方法 //這個方法使用XMLHTTPRequest對象進(jìn)行AJAX的異步數(shù)據(jù)交互 var xmlhttp; function verify(){ //1.使用dom的方式獲取文本框中的值 //document.getElementBuId("userName")是dom中獲取元素節(jié)點的一種方法,一個元素節(jié)點對應(yīng)HTML頁面中的一個標(biāo)簽,如果<input> //.value可以獲取一個元素節(jié)點的value屬性值 var userName = document.getElementById("userName").value;
//2.創(chuàng)建XMLHttpRequest對象 //這是XMLHttpRequest兌現(xiàn)使用中最為復(fù)雜的一步 //需要這對IE和其他類型瀏覽器建立這個對象的不方式寫不同的代碼 if(window.XMLHttpRequest){ //針對FireFox,Mozillar,opera,safari,IE7,IE8 xmlhttp = new XMLHttpRequest(); //針對某些特定版本的mozillar瀏覽器的bug修正 if(xmlhttp.overrideMimeType){ xmlhttp.overrideMimeType("text/xml") } }else if(window.ActiveXObject){ //針對IE5,IE5.5,IE6(IE7,IE8) //兩個可以用于創(chuàng)建XMLHTTPRequest對象的控件名稱,保存在一個js數(shù)組中 //排在前面的版本較新 var activexName =["MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; for(var i=0;i<activexName.length;i++){ try{ //取出一個控件名進(jìn)行創(chuàng)建,如果創(chuàng)建成功就終止循環(huán) //如果創(chuàng)建失敗,拋出異常,然后繼續(xù)循環(huán),繼續(xù)嘗試創(chuàng)建 xmlhttp = new ActiveXObject(activexName[i]); break; } catch(e){ } } } // 確認(rèn)XMLHttpRequest對象創(chuàng)建成功 // if(!xmlhttp){ // alert("XMLHttpRequest對象創(chuàng)建失敗!"); // return; // }else{ // //alert(xmlhttp); // alert(xmlhttp.readyState); // }
//2 注冊回調(diào)函數(shù) //注冊回調(diào)函數(shù)時只需要函數(shù)名不要加括號 //我們需要注冊的是函數(shù)名稱,如果加上括號,就把函數(shù)的返回值給注冊上了,這是錯誤的 xmlhttp.onreadystatechange = callback;
//3設(shè)置連接信息 //第一個參數(shù)表示http的請求方式。支持所有http的請求方式。主要使用get和post //第二個參數(shù)表示請求的url地址,get方式的參數(shù)也在url中 //第三個參數(shù)表示采用異步還是同步方式交互,true表示異步 //GET方式請求的代碼 //xmlhttp.open("GET","AJAXServer?name="+userName,true); //POST方式請求的代碼 xmlhttp.open("POST","AJAXServer",true); //POST方式需要自己設(shè)置http的請求頭 xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //POST方式發(fā)送數(shù)據(jù) xmlhttp.send("name="+userName); //4 發(fā)送數(shù)據(jù),開始和服務(wù)器端進(jìn)行交互 //同步方式下,send這句話會在服務(wù)器設(shè)置回來后才執(zhí)行完 //異步方式,send這句話執(zhí)行晚會立即完成 //GET方式 //xmlhttp.send(null); }
//回調(diào)函數(shù) function callback(){ // alert(xmlhttp.readyState); //5接收響應(yīng)數(shù)據(jù) //判斷對象的狀態(tài)是交互完成 if(xmlhttp.readyState==4){ //判斷http的交互是否成功、 if(xmlhttp.status==200){ //獲取服務(wù)器端返回的數(shù)據(jù) //獲取服務(wù)器端輸出的純文本數(shù)據(jù) var responseText = xmlhttp.responseText; //將數(shù)據(jù)顯示在頁面上 //通過dom方式找到div標(biāo)簽所對應(yīng)的元素節(jié)點 var divNode = document.getElementById("result"); //設(shè)置元素節(jié)點中的html內(nèi)容 divNode.innerHTML=responseText; }else { alert("出錯了"); } }
}
|