AJAX中的readystate是什么?
AJAX(Asynchronous JavaScript and XML)是一種在網頁上進行異步通信的技術。在AJAX中,readystate(就緒狀態)是用于判斷異步請求的當前狀態的屬性。readystate有四個不同的值,分別表示不同的狀態。通過對readystate的值進行判斷,可以確定何時接收到服務器的響應以及響應的狀態。
以下是四個不同的readystate的值以及其代表的含義:
- 0:Uninitialized (未初始化)
- 1:Open (已打開)
- 2:Sent (已發送)
- 3:Receiving (正在接收)
- 4:Completed (已完成)
readystate的值為0時,表示請求尚未初始化。這是AJAX對象創建后的初始狀態。
var xhttp = new XMLHttpRequest(); console.log(xhttp.readyState); // 輸出0
readystate的值為1時,表示請求已經建立,但尚未發送。這是request的open()方法被調用后的狀態。
var xhttp = new XMLHttpRequest(); xhttp.open("GET", "data.txt", true); console.log(xhttp.readyState); // 輸出1
readystate的值為2時,表示請求已經發送。這是request的send()方法被調用后的狀態。
var xhttp = new XMLHttpRequest(); xhttp.open("GET", "data.txt", true); xhttp.send(); console.log(xhttp.readyState); // 輸出2
readystate的值為3時,表示正在接收服務器的響應數據。這是服務器的響應開始傳輸的狀態。
var xhttp = new XMLHttpRequest(); xhttp.open("GET", "data.txt", true); xhttp.send(); console.log(xhttp.readyState); // 輸出3
readystate的值為4時,表示服務器的響應數據已經完全接收。這是AJAX請求的結束狀態。
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { console.log(xhttp.responseText); console.log(xhttp.readyState); // 輸出4 } }; xhttp.open("GET", "data.txt", true); xhttp.send();
通過檢測readystate的值,我們可以在AJAX請求的不同階段執行相應的操作。例如,當readystate的值為4時,我們可以通過判斷status(響應狀態)的值來確定請求是否成功。
在以下示例中,我們使用AJAX來獲取一個名叫"data.txt"的文本文件,并在成功接收響應后將其內容顯示在網頁中:
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { document.getElementById("data").innerHTML = xhttp.responseText; } }; xhttp.open("GET", "data.txt", true); xhttp.send();
以上示例中的readystate屬性在請求的不同狀態下發生變化,在readystate為4且status為200時,將獲取到的文本內容顯示在id為"data"的元素中。
總結:AJAX中的readystate屬性用于標識異步請求的當前狀態,它有四個不同的值,分別表示不同的狀態。通過檢測readystate的值,我們可以適時地處理響應,并根據需要執行相應的行為。