"Pragmatic Ajax (Dynamic Website Static) A Web 2.0 Primer"에서 실수로 ReadyStae 상태에 대한 소개를 보았습니다. 이 소개는 매우 현실적이라고 생각합니다. 번역은 다음과 같습니다.
0 : (초기화되지 않은) send () 메소드가 아직 호출되지 않았습니다.
1 : (로드) send () 메소드가 호출되어 진행 중입니다.
2 : (로드) send () 메소드가 완료되었고 전체 응답이 수신되었습니다.
3 : (대화식) 응답이 구문 분석되고 있습니다.
4 : (완료) 응답이 구문 분석되었으며 수확 준비가되었습니다.
0- (uneitialized) send () 메소드가 아직 호출되지 않았습니다.
1- (load) send () 메소드가 호출되고 요청이 전송됩니다.
2- (로드 완료) send () 메소드가 실행되고 모든 응답 내용이 수신되었습니다.
3- (상호 작용) 응답 내용이 구문 분석되고 있습니다
4- (완료) 응답 콘텐츠 구문 분석이 완료되고 클라이언트에서 호출 될 수 있습니다.
다른 책의 대부분은이 5 개의 ReadyState 주에 대해 모호합니다. 예를 들어, "Ajax의 기초"에서 국가의 "이름"은 책의 표 2-2에 간단히 나열되어 있습니다. 5 개의 가능한 값은 0 = 비 초기화, 1 = 하중, 2 =로드, 3 = 대화식 및 4 = 완료입니다. 이 5 개 주의 세부 사항은 "Ajax (Dynamic Website STATIC)의 행동"에서 전혀 언급되지 않은 것으로 보입니다. "전문가 Ajax"는 만족스럽지 않지만 여전히 장점이 있습니다.
ReadyState에는 5 가지 가능한 값이 있습니다.
0 (초기화되지 않은) : 개체가 생성되었지만 Open () 메소드가 호출되지 않았습니다.
1 (로드) : Open () 메소드가 호출되었지만 요청이 전송되지 않았습니다.
2 (로드) : 요청이 전송되었습니다.
3 (대화식). 부분적인 응답이 접수되었습니다.
4 (완료) : 모든 데이터가 수신되고 연결이 닫혔습니다.
ReadyState에는 5 가지 가능한 값이 있습니다.
0 (초기화되지 않은) : (XML (표준화가 가까워지고 있습니다) httprequest) 객체가 만들어졌지만 Open () 메소드는 아직 호출되지 않았습니다.
1 (load) : Open () 메소드가 호출되었지만 아직 요청이 전송되지 않았습니다.
2 (로드가 완료 됨) : 요청이 전송되었습니다.
3 (상호 작용) : 응답 데이터의 일부를 수신 할 수 있습니다.
4 (완료) : 모든 데이터가 수신되고 연결이 닫혔습니다.
"Ajax 이해 : JavaScript를 사용하여 풍부한 인터넷 애플리케이션을 작성하십시오"에서 다음 표에 대해 설명합니다.
ReadyState 상태 코드
XML의 상태 (표준화가 가까워지고 있습니다) httprequest 객체
(0) 초기화되지 않은
객체가 생성되었지만 초기화되지 않았습니다. (열린 방법은 호출되지 않았습니다.)
(XML (표준화가 가까워지고 있음) httprequest) 객체가 생성되었지만 아직 초기화되지 않았습니다 (열린 메소드는 아직 호출되지 않았습니다).
(1) 로딩
로드 객체가 생성되었지만 보내기 메소드가 호출되지 않았습니다.
(XML (표준화가 가까워지고 있습니다) httprequest) 객체가 만들어졌지만 아직 보내기 메소드가 호출되지 않았습니다.
(2)로드
Send 메소드가 호출되었지만 상태 및 헤더는 아직 사용할 수 없습니다.
Send 메소드가 호출되었으며 (HTTP 응답) 상태 및 헤더를 사용할 수 없습니다.
(3) 대화식
상호 작용 일부 데이터가 접수되었습니다. 상태 및 응답 헤더가 완전히 사용할 수 없으므로 부분 결과를 얻기 위해이 상태에서 응답 대상 및 응답 텍스트 속성을 호출하면 오류가 반환됩니다.
일부 데이터가 접수되었습니다. 그러나 일부 결과를 얻기 위해 현재 응답 바디 및 responseText 속성을 호출하면 상태 및 응답 헤더가 완전히 사용할 수 없으므로 오류가 발생합니다.
(4) 완료
모든 데이터가 수신되었으며 완전한 데이터는 응답 바디 및 응답 텍스트 속성에서 사용할 수 있습니다.
모든 데이터가 수신되었으며 전체 데이터는 응답 바디 및 대응 텍스트 속성에서 추출 될 수 있습니다.
위의 책에서 5 개의 ReadyState 상태를 도입 한 것에 따르면, 나는 "Pragmatic ajax (Dynamic Website Static)가 웹 2.0 프라이머가 더 많이 사용된다고 생각합니다. 왜냐하면 다른 책에서 언급되지 않은 구문 분석 수신 데이터의 문제를 언급하기 때문입니다. 이것이 "(3) 상호 작용"단계가 "(2)로드 완료"와 "(4) 완료", 즉 그 작업이 무엇인지 사이의 필요한 변환 프로세스로 존재하는 이유입니다. 요약하면, 이상적인 설명 방법은 "상태 : task (목표) + 프로세스 + 성능 (또는 특성)의 표현 패턴에서 이러한 상태를 정확하고 쉽게 이해할 수 있어야한다고 생각합니다. 현재 시험 요약은 다음과 같습니다.
ReadyState 상태 설명
(0) 초기화되지 않습니다
이 단계에서 XML (표준화가 가까워지고 있음) HTTPREQUEST 객체가 생성되는지 확인하고 개방형 () 메소드를 호출하지 않도록 준비하십시오. 0의 값은 객체가 이미 존재한다는 것을 의미합니다. 그렇지 않으면 브라우저가 오류를보고합니다. 객체가 존재하지 않습니다.
(1)로드
이 단계에서 XML (표준화가 가까워지고 있습니다) httprequest 객체가 초기화됩니다. Send () 메소드를 호출하여 서버에 요청을 보내기 시작하십시오. 1의 값은 요청이 서버로 전송되고 있음을 의미합니다.
(2) 로딩이 완료되었습니다
이 단계는 서버 측에서 응답 데이터를 수신합니다. 그러나 얻은 것은 서버 응답의 원래 데이터이며 클라이언트에서 직접 사용할 수 없습니다. 2의 값은 완전한 응답 데이터가 수신되었음을 의미합니다. 다음 단계의 데이터 구문 분석을 준비하십시오.
(3) 상호 작용
이 단계에서 수신 된 서버 측 응답 데이터가 구문 분석됩니다. 즉, 서버 측 응답 헤더가 반환 한 MIME 유형에 따르면, 데이터는 응답 body, responsext 또는 responsexml을 통해 액세스 할 수있는 형식으로 변환됩니다 (표준화는 더 가까워지고 더 가까워지고 있음) 속성이 클라이언트 호출을 준비합니다. 상태 3은 데이터가 구문 분석되고 있음을 의미합니다.
(4) 완료
이 단계에서는 모든 데이터가 클라이언트가 이용할 수있는 형식으로 구문 분석되었으며 구문 분석이 완료되었음을 확인하십시오. 4의 값은 데이터가 구문 분석되었음을 의미합니다. HTTPRequest 객체의 해당 속성을 통해 데이터를 얻을 수 있습니다 (표준화가 점점 가까워지고 있습니다).
요약하면, 전체 XML의 수명주기 (표준화가 점점 가까워지고 있습니다) httprequest 객체는 다음 단계를 포함해야합니다.
생성 - 요청 초기화 - 요청 보내기 - 데이터 수신 - 데이터 분석 - 완료
특정 응용 분야에서 5 개의 ReadyState 상태 (XML (표준화가 가까워지고 있음)의 의미를 명확히하고 HTTPREQUEST 객체의 다양한 수명주기)는 AJAX (정적 웹 사이트)의 핵심의 미스터리를 제거 할 수 있습니다 (모호한 진술 뒤에는 사람들이 명확하게 이해하는 데 도움이되는 신비로운 방법이 있습니다. 학습 및 자신감 향상에 대한 좌절감을 줄입니다.
예를 들어, 예를 따르면 다음과 같습니다.
코드 사본은 다음과 같습니다.
// 배열을 선언합니다
var States = [ "초기화 ...",
“요청 초기화… 성공했습니다!
요청 보내기 ... ",
"성공!
데이터 수신 ... ",
"마치다!
데이터 분석 ... ",
"마치다!
"];
// 콜백 함수의 내부 코드 스 니펫
if (XML (표준화가 가까워지고 있음) http.readystate == 4)
{
var span = document.createelement ( "span");
span.innerhtml = states [xml (표준화가 가까워지고 있습니다) http.readystate];
document.body.appendChild (span);
if (XML (표준화가 가까워지고 있음) http.status == 200)
{
var XML (표준화가 가까워지고 있음) DOC = XML (표준화가 가까워지고 있습니다) http.responsexml (표준화가 점점 가까워지고 있음);
// 다른 코드
}
// 메모리 누출을 방지하기 위해 파괴하는 것을 잊지 마십시오
XML (표준화가 가까워지고 있습니다) http = null;
}또 다른{
var span = document.createelement ( "span");
span.innerhtml = states [xml (표준화가 가까워지고 있습니다) http.readystate];
document.body.appendChild (span);
} 결과는 다음과 같습니다.
요청 초기화 ... 성공!
요청 보내기 ... 성공했습니다!
데이터 수신 ... 완료되었습니다!
데이터 분석 ... 완료되었습니다!
XML (표준화가 점점 가까워지고 있음) httprequest 객체가 모든 단계에서 수행하는 일을 쉽게 이해할 수 있습니다. 따라서 AJAX (Dynamic Website STATIC)의 핵심 부분을 간단하고 명확하게 이해하는 것은 쉽습니다.