網(wǎng)站空間是指什么寧波seo公司排名
XMLHttpRequest(XHR)對象中的readyState和status用于監(jiān)控異步 HTTP 請求的狀態(tài)。它們分別表示請求的當(dāng)前階段和服務(wù)器的響應(yīng)狀態(tài)。
readyState
用于判斷請求所處的階段,確保數(shù)據(jù)完全接收。
status
用于判斷請求的結(jié)果狀態(tài)(如200表示成功,404表示資源不存在)。
文章目錄
- readyState 屬性
- status 屬性
- 1xx: 信息性狀態(tài)碼
- 2xx: 成功狀態(tài)碼
- 3xx: 重定向狀態(tài)碼
- 4xx: 客戶端錯誤狀態(tài)碼
- 5xx: 服務(wù)器錯誤狀態(tài)碼
- 例子
readyState 屬性
readyState
屬性表示請求的當(dāng)前狀態(tài),取值范圍從 0 到 4。每個值的含義如下:
-
0: UNSENT
請求未初始化,尚未調(diào)用open()
方法。 -
1: OPENED
請求已被初始化,調(diào)用了open()
方法,但尚未調(diào)用send()
方法。 -
2: HEADERS_RECEIVED
請求已發(fā)送,服務(wù)器響應(yīng)頭已被接收,但響應(yīng)體尚未接收。 -
3: LOADING
響應(yīng)體正在接收中。可以接收到部分?jǐn)?shù)據(jù)。 -
4: DONE
請求操作已經(jīng)完成。這意味著數(shù)據(jù)傳輸已經(jīng)徹底完成或失敗。
請求已完成,響應(yīng)已完全接收。此時可以通過
responseText
或responseXML
屬性訪問響應(yīng)數(shù)據(jù)。
status 屬性
1xx:信息響應(yīng)類,這些狀態(tài)碼表示請求已被接收并正在繼續(xù)處理。
2xx:處理成功響應(yīng)類,這些狀態(tài)碼表示請求已成功處理。
3xx:重定向響應(yīng)類,這些狀態(tài)碼表示客戶端需要進(jìn)一步的操作才能完成請求。
4xx:客戶端錯誤,這些狀態(tài)碼表示請求有誤,客戶端需修改請求。
5xx:服務(wù)端錯誤,這些狀態(tài)碼表示服務(wù)器在處理請求時發(fā)生了錯誤。
1xx: 信息性狀態(tài)碼
這些狀態(tài)碼表示請求已被接收并正在繼續(xù)處理。
-
100 Continue
客戶端應(yīng)繼續(xù)發(fā)送請求。通常用于在發(fā)送大型請求時,客戶端可以先發(fā)送請求的頭部,然后等待服務(wù)器的確認(rèn)。 -
101 Switching Protocols
服務(wù)器已理解客戶端的請求,并將其協(xié)議更改為客戶端所請求的協(xié)議。
2xx: 成功狀態(tài)碼
這些狀態(tài)碼表示請求已成功處理。
-
200 OK
請求成功,服務(wù)器返回所請求的數(shù)據(jù)。 -
201 Created
請求成功并創(chuàng)建了新的資源,通常用于 POST 請求。 -
202 Accepted
請求已接受,但尚未處理。此狀態(tài)通常用于異步處理。 -
203 Non-Authoritative Information
服務(wù)器成功處理了請求,但返回的信息可能來自另一來源。 -
204 No Content
在更新一個資源后,如果不需要向客戶端返回任何新的數(shù)據(jù)
請求成功,但沒有返回任何內(nèi)容,常用于 DELETE 請求。
-
205 Reset Content
請求成功,要求客戶端重置文檔視圖。 -
206 Partial Content
服務(wù)器成功處理了部分 GET 請求,通常用于下載大文件時的斷點(diǎn)續(xù)傳。
3xx: 重定向狀態(tài)碼
這些狀態(tài)碼表示客戶端需要進(jìn)一步的操作才能完成請求。
-
300 Multiple Choices
請求的資源有多種選擇,用戶可以選擇其中一個。 -
301 Moved Permanently
請求的資源已被永久移動到新 URI,未來的請求應(yīng)使用新 URI。 -
302 Found
請求的資源臨時移動到新 URI,客戶端應(yīng)繼續(xù)使用原 URI。 -
303 See Other
請求的響應(yīng)可在另一個 URI 下找到,客戶端應(yīng)使用 GET 方法請求該 URI。 -
304 Not Modified
資源未修改,可以使用緩存的版本。常用于條件請求。 -
305 Use Proxy
請求的資源必須通過代理訪問。 -
307 Temporary Redirect
請求的資源臨時移動到新 URI,客戶端應(yīng)使用相同的方法進(jìn)行請求。 -
308 Permanent Redirect
請求的資源已被永久移動,未來請求應(yīng)使用新 URI,且應(yīng)使用相同的方法進(jìn)行請求。
4xx: 客戶端錯誤狀態(tài)碼
這些狀態(tài)碼表示請求有誤,客戶端需修改請求。
-
400 Bad Request
請求無效,服務(wù)器無法理解。 -
401 Unauthorized
請求未授權(quán),需提供身份驗證。 -
402 Payment Required
該狀態(tài)碼保留用于將來的需求,目前尚未廣泛使用。 -
403 Forbidden
服務(wù)器理解請求,但拒絕執(zhí)行,用戶無權(quán)訪問請求的資源。 -
404 Not Found
請求的資源未找到。 -
405 Method Not Allowed
請求方法不被允許,資源不支持該方法。 -
406 Not Acceptable
請求的資源無法滿足請求頭中指定的條件。 -
407 Proxy Authentication Required
需要代理身份驗證。 -
408 Request Timeout
服務(wù)器在等待請求時超時。 -
409 Conflict
請求無法完成,因為存在沖突。 -
410 Gone
請求的資源已被永久刪除,且沒有轉(zhuǎn)發(fā)地址。 -
411 Length Required
服務(wù)器要求請求中指定 Content-Length。 -
412 Precondition Failed
請求中的某個條件未滿足。 -
413 Payload Too Large
請求的有效負(fù)載太大,服務(wù)器無法處理。 -
414 URI Too Long
請求的 URI 太長,服務(wù)器無法處理。 -
415 Unsupported Media Type
請求的媒體類型不被服務(wù)器支持。 -
416 Range Not Satisfiable
請求的范圍無效,服務(wù)器無法滿足請求。 -
417 Expectation Failed
服務(wù)器無法滿足 Expect 請求頭中的期望。
5xx: 服務(wù)器錯誤狀態(tài)碼
這些狀態(tài)碼表示服務(wù)器在處理請求時發(fā)生了錯誤。
-
500 Internal Server Error
服務(wù)器發(fā)生意外錯誤,無法完成請求。 -
501 Not Implemented
服務(wù)器不支持請求的方法。 -
502 Bad Gateway
服務(wù)器作為網(wǎng)關(guān)或代理時收到無效響應(yīng)。 -
503 Service Unavailable
服務(wù)器當(dāng)前無法處理請求,通常是由于過載或維護(hù)。 -
504 Gateway Timeout
服務(wù)器作為網(wǎng)關(guān)或代理時,未能及時從上游服務(wù)器獲取請求。
例子
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data', true);xhr.onreadystatechange = function() {if (xhr.readyState === 4) { // DONEswitch (xhr.status) {case 200:console.log('Success:', xhr.responseText);break;case 404:console.error('Error 404: Not Found');break;case 500:console.error('Error 500: Internal Server Error');break;default:console.error('Error:', xhr.status, xhr.statusText);}}
};xhr.send();
以上代碼展示了如何根據(jù)不同的 HTTP 狀態(tài)碼進(jìn)行不同的處理。