xmlhttprequest의 다른 ReadyStates는 무엇을 의미하며 어떻게 사용할 수 있습니까?
-
08-07-2019 - |
문제
XMLHttpRequest
5가 있습니다 readyState
S, 그리고 나는 그들 중 하나만 사용합니다 (마지막 것, 4
).
다른 사람들은 무엇이며 어떤 실제 응용 프로그램을 사용할 수 있습니까?
해결책
전체 목록 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 구현은 부분적으로 수신 된 응답을 볼 수 있습니다. responseText
언제 readyState==3
, 그러나 이것은 보편적으로 지원되지 않으며 의존해서는 안됩니다.
다른 팁
키에 론의 대답은 W3Schools Ref. 아무도 의지하지 않는Bobince의 답변은 링크를 제공하며 실제로 IE의 기본 구현을 알려줍니다.
따라서 ReadyState가 나타내는 것을 올바르게 이해하도록 인용 된 원본 문서는 다음과 같습니다.
xmlhttprequest 객체는 여러 주에있을 수 있습니다. ReadyState 속성은 현재 상태를 반환해야하며 다음 값 중 하나 여야합니다.
Unsent (숫자 값 0)
물체가 구성되었습니다.개방 (숫자 값 1)
Open () 메소드가 성공적으로 호출되었습니다. 이 상태 요청 중에 SetRequestHeader ()를 사용하여 헤더를 설정할 수 있으며 send () 메소드를 사용하여 요청을 수행 할 수 있습니다.headers_received (숫자 값 2)
모든 리디렉션 (있는 경우)을 따르고 최종 응답의 모든 HTTP 헤더가 수신되었습니다. 이제 객체의 여러 응답 멤버를 사용할 수 있습니다.로딩 (숫자 값 3)
응답 엔티티 본체가 수신되고 있습니다.완료 (숫자 값 4)
데이터 전송이 완료되었거나 전송 중에 무언가 잘못 되었음 (예 : 무한 리디렉션).
여기에서 읽으십시오 : readystate의 W3C 설명
0
, 1
그리고 2
지금까지 전화 한 요청을하는 데 필요한 방법 중 몇 개만 추적하십시오.
3
서버의 응답이 들어 오기 시작했음을 알려줍니다. 그러나 당신이 사용할 때 XMLHttpRequest
웹 페이지에서 객체는 거의 없습니다 (*) 해당 정보로 수행 할 수 있습니다. 부분 데이터를 읽을 수있는 확장 된 속성에 액세스 할 수 없기 때문입니다.
준비 상태 4
어떤 의미를 지니고있는 유일한 사람입니다.
(*: ReadyState를 확인하기 위해 생각할 수있는 유일한 용도에 대해 3
서버 끝에서 어떤 형태의 삶을 신호하므로,받을 때 전체 응답을 기다리는 시간을 늘릴 수 있습니다.)
OnreadyStateChange는 ReadyState 속성이 readystate가 XMLHTTPrequest의 상태를 보유 할 때마다 자동으로 호출 할 함수 (또는 함수 이름)를 저장합니다. 0에서 4로 변경됩니다.
0 : 초기화되지 않은 요청
1 : 서버 연결이 설정되었습니다
2 : 요청을 받았습니다
3 : 처리 요청
4 : 요청 완료 및 응답이 준비되었습니다
상태 200 : "OK"
404 페이지를 찾을 수 없습니다
- 0 : unsent 클라이언트가 생성되었습니다. Open ()는 아직 호출되지 않았습니다.
- 1 : Open Open ()가 호출되었습니다.
- 2 : headers_received send ()가 호출되었으며 헤더와 상태를 사용할 수 있습니다.
- 3 : 다운로드로드; relateetext는 부분 데이터를 보유합니다.
- 4 : 완료 작업이 완료되었습니다.
(https://developer.mozilla.org/en-us/docs/web/api/api/xmlhttprequest/readystate에서)