簡談ajax--使用ajax實現使用者註冊
1.XMLHttpRequest物件
XMLHttpRequest是Ajax開發的基礎,它提供客戶端與伺服器端進行非同步通訊的功能。一方面它向伺服器提交一個請求,獲取頁面的內容;另一方面將資料通過JavaScript傳送到伺服器端後,按預期的方式對資料進行處理,結合XML和CSS,做出各種應用程式。
2.利用XMLHttpRequest物件構建Ajax應用
利用 XMLHttpRequest物件,每次構建Ajax應用遵循步驟
1. 建立XHR物件
2.建立Ajax請求
3.傳送Ajax請求
4.處理伺服器響應
3.建立XMLHttpRequest物件
XMLHttpRequest物件的建立方式和不同的瀏覽器相關
var xmlhttp;
try{
xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
}catch(e){
try{
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
try{
xmlhttp = new XMLHttpRequest()
}catch(){}
}
}
這樣就用指令碼實現了跨瀏覽器的相容性
4.使用open方法建立一個請求
Open(method, url , asynchronous,user,password)
引數的含義:
method:指定請求的型別,一般為get和post
url:指定請求的地址,可以使用絕對路徑或相對地址,可以附帶傳參
asynchronous:可選引數,標識請求是同步還是非同步,非同步請求為true,同步請求為false,預設請求為true
user:可選引數,指定請求的使用者名稱,沒有則省略
password:可選引數指定請求的密碼,沒有則省略
5.使用send的方法傳送一個請求
send(body) 該方法僅有一個body引數,指要想向伺服器傳送的資料,其格式為查詢字串格式、
如果用post請求必須在send的之前設定HTTP頭資訊
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
使用onreadystatechange實現捕獲請求的狀態變化
在傳送請求後往往不知道請求的什麼時候完成,利用事件機制捕獲請求的狀態
在呼叫open 與send的方法都會觸發onreadystatechange事件
使用readyState屬性判斷請求的狀態
0:表示物件已經建立,但還沒有初始化
1:當呼叫open方法後,redyState=1,表示XMLHttpRequest物件已經被初始化
2:當呼叫send方法後,XHR在向伺服器傳送請求的這段時間內readyState=2
3:當呼叫send方法,伺服器成功接收到所有請求後,readyState=3
4:表示已經成功接收到來自伺服器的相應資料
使用status屬性判斷HTTP相應程式碼
200:請求成功
202:請求被接受,但處理未完成
400:錯誤請求
404:請求資源為找到
500:伺服器內部錯誤
<script type="text/javascript">
function checkname(){
//ajax校驗使用者名稱
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
document.getElementById('result').innerHTML = xhr.responseText;
}
}
//獲得輸入的使用者名稱,並傳遞個伺服器端
var username = document.getElementById('username').value;
//對ming變數的特殊符號資訊進行編碼
username = encodeURIComponent(username);
xhr.open('get','./04.php?nm='+ming+'&age=23', true);
//xhr.open第三個引數預設非同步請求為true, 改成同步請求為false;
xhr.send(null);
}
</script>