AJAX的請求步驟
(1)創建異步對象XMLHttpRequest
(2)請求數據準備,設置請求參數(請求的方法、路徑):調用XMLHttpRequest對象的open方法
1)(無參)get方法send的參數爲null
2)(有參)post方法send的參數爲路徑,需要在發送之前設置請求頭對參數進行解析
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
(3)發送:調用XMLHttpRequest對象的send方法
(4)檢測服務器狀態:爲XMLHttpRequest對象增加onreadyStatechange函數,對服務器狀態進行檢測(當狀態值readyState等於4,狀態碼status等於200則說明服務器正常運行並返回響應數據)
1)是否完成:XMLHttpRequest對象的readyState==4
2)是否可用:XMLHttpRequest對象的status==200
readyState(狀態值)有五種可能的值:
0 (未初始化): (XMLHttpRequest)對象已經創建,但還沒有調用open()方法。
1 (載入):已經調用open() 方法,但尚未發送請求。
2 (載入完成): 請求已經發送完成。
3 (交互):可以接收到部分響應數據。
4 (完成):已經接收到了全部數據,並且連接已經關閉。
status(狀態碼)檢測的是服務器的處理狀態 https://www.runoob.com/http/http-status-codes.html
狀態碼是由3個數字組成,分別表示不同狀態類型(5種)
1. 1XX 表示服務器正在處理中;
2. 2XX 表示請求成功,比如200;
3. 3XX 重定向,表示請求不成功,客戶必須採取處理方式;304 303
4. 4XX 客戶端錯誤,表示請求的地址或者文檔不存在,比如404;
5. 5XX 服務端或者後臺出現問題,比如500,503……
(5)響應主體返回的文本:XMLHttpRequest對象的reponseText屬性
實例
一、原生方法(常考)
1、get方法進行AJAX請求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p>userName: <input type="text" name="" id="username"></p>
<p>password: <input type="password" name="" id="password"></p>
<button id="login">登錄</button>
<p id="txt"></p>
<script>
login.οnclick=function(){
var xhr=new XMLHttpRequest();
xhr.open('get','test.php?user='+username.value+'&pass='+password.value);
xhr.send(null);
xhr.onreadystatechange=function(){
if (xhr.readyState==4) {
if (xhr.status==200) {
txt.innerHTML=xhr.responseText;
}
}
}
}
</script>
</body>
</html>