XMLHttpRequest의 다른 readystates는 무엇을 의미하며 어떻게 사용할 수 있습니까?


답변:


172

전체 readyState값 목록 은 다음과 같습니다.

State  Description
0      The request is not initialized
1      The request has been set up
2      The request has been sent
3      The request is in process
4      The request is complete

( https://www.w3schools.com/js/js_ajax_http_response.asp에서 )

실제로 4를 제외하고는 거의 사용하지 않습니다.

일부 XMLHttpRequest 구현에서는 responseTextwhen 에서 부분적으로 수신 된 응답을 볼 수 readyState==3있지만 이것은 보편적으로 지원되지 않으며 의존해서는 안됩니다.


5
전송 오류는 여전히 readyState를 4로 업데이트합니다. 그러나 완전히 중단 된 전송은 readyState를 0으로 재설정합니다. 따라서 리디렉션의 결과 인 전송 오류는 실제로 "오류"가 아니며 로깅을 무시하도록 선택할 수 있습니다. / xhr의 readyState가 0 인 경우 오류보고. 약간 취약하며 모든 이벤트 / 오류를 로깅하는 것이 "필수"인지 또는 "있어서 좋은지"에 따라 마일리지가 달라질 수 있습니다. 후자의 경우 readyState 0과 함께 오류 일 수있는 드문 이벤트를 잃어 버릴 수 있습니다.
Greg Pettit 2013 년

2
그의 조언을 위해 @MattBianco에 +1하십시오. 또한 Mozilla 개발자 네트워크 MDN 은 모든 JavaScript / HTML / CSS 요구 사항을 충족하는 가장 인기 있고 신뢰할 수있는 참조 사이트 중 하나라고 덧붙이고 싶습니다 . Google 검색을 수행 할 때 "mdn"을 쿼리 앞에 추가하면 두통을 덜 수 있습니다.
DondeEstaMiCulo

@GregPettit, 우리가 인터넷에 연결, readyState가 0을 사용, 또는 "요청이 초기화되지 않습니다"어떻게이 존재하는 이유가 있습니다
이씨 샤르마

4
잘 모르겠습니다, @vishalsharma-제가 기억하는 것처럼 요청이 초기화되지 않는 한 readystate는 0입니다. 그 후 다른 "완료"(성공 또는 오류)는 readystate를 4로 업데이트합니다. 따라서 전송이 시작된 후 인터넷이 끊어지면 0이 아닌 4로 전환됩니다. 전송이 완료되었을 때 인터넷이 없었던 경우 시도했지만 여전히 0이어야합니다. 핸드 셰이크 후에 만 ​​1로 이동합니다.
Greg Pettit

readyState 2에 대한 설명이 잘못되었거나 적어도 완전히 오해의 소지가 있습니다. Shure는 요청을 보냈지 만 해당 상태는 실제로 모든 최종 응답 헤더가 수신되었다고 말합니다.
inta

32

kieron 의 답변에는 w3schools ref가 포함되어 있습니다. 아무도 의지하지 않는, bobince 의 대답은 실제로 IE의 기본 구현을 알려주는 링크를 제공합니다.

그래서 여기에 readystate가 무엇을 나타내는 지 올바르게 이해하기 위해 인용 된 원본 문서가 있습니다.

XMLHttpRequest 객체는 여러 상태에있을 수 있습니다. readyState 속성은 현재 상태를 반환해야하며 다음 값 중 하나 여야합니다.

UNSENT (숫자 값 0)
개체가 생성되었습니다.

OPENED (숫자 값 1)
open () 메서드가 성공적으로 호출되었습니다. 이 상태에서 요청 헤더는 setRequestHeader ()를 사용하여 설정할 수 있으며 요청은 send () 메서드를 사용하여 만들 수 있습니다.

HEADERS_RECEIVED (숫자 값 2)
모든 리디렉션 (있는 경우)을 따르고 최종 응답의 모든 HTTP 헤더를 수신했습니다. 이제 개체의 여러 응답 멤버를 사용할 수 있습니다.

LOADING (숫자 값 3)
응답 엔티티 본문을 수신 중입니다.

DONE (숫자 값 4)
데이터 전송이 완료되었거나 전송 중에 문제가 발생했습니다 (예 : 무한 리디렉션).

여기에서 읽으십시오 : ReadyState의 W3C 설명


@CharlesWood, 나를위한 도전은 여기에 있었다 stackoverflow markdown 편집기는 w3c에 대한 참조를 받아들이지 않을 것입니다 .. 확인하십시오. 그래서 나는 goo.gl에서 짧은 URL을 넣었습니다. w3c url ...
Vishal Sharma 2014

허, 방금 샌드 박스 에서 시도해 보았는데 작동하는 것 같았습니다.
Charles Wood

22

원본 최종 문서

0, 12단지 당신이 지금까지 전화 한 요청을하는 데 필요한 방법 중 얼마나 많은을 추적 할 수 있습니다.

3서버의 응답이 들어 오기 시작했음을 알려줍니다. 그러나 XMLHttpRequest웹 페이지에서 개체를 사용할 때는 해당 정보로 할 수있는 작업이 거의 없습니다 (*). 허용하는 확장 속성에 대한 액세스 권한이 없기 때문입니다. 부분 데이터를 읽으십시오.

readyState 4는 모든 의미를 보유하는 유일한 것입니다.

(* : readyState를 확인하기 위해 생각할 수있는 유일한 용도 3는 서버 끝에서 어떤 형태의 생명체를 신호한다는 것입니다. 따라서 전체 응답을받을 때까지 기다리는 시간을 늘릴 수 있습니다.)


1

onreadystatechange readyState 속성이 변경 될 때마다 자동으로 호출 될 함수 (또는 함수 이름)를 저장합니다. readyState XMLHttpRequest의 상태를 보유합니다. 0에서 4로 변경됩니다.

0 : 요청이 초기화되지 않았습니다.

1 : 서버 연결 설정

2 : 요청 수신

3 : 요청 처리

4 : 요청 완료 및 응답 준비

상태 200 : "OK"

404 페이지를 찾을 수 없습니다


0
  • 0 : UNSENT 클라이언트가 생성되었습니다. open () 아직 호출되지 않았습니다.
  • 1 : OPENED open ()이 호출되었습니다.
  • 2 : HEADERS_RECEIVED send ()가 호출되었으며 헤더 및 상태를 사용할 수 있습니다.
  • 3 : LOADING 다운로드 중; responseText는 부분 데이터를 보유합니다.
  • 4 : DONE 작업이 완료되었습니다.

(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState에서)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.