2013-05-31 9 views
2

나는 약간의 '부수적'질문이 있습니다 :Ajax> onreadystatechange - open/send> 주문이 완전히 임의입니까?

아약스 ...에 요청을 전송 개방확실히,을 보내 antecede ...하지만 무엇 을 onreadystatechange 할당에 대해 할 수있다?

열기 전에- 요청 개체가있는 경우 이후에- 또는 그 사이에? 관심있는 유일한 readyState가 4 인 경우

일반적으로
// Using POST 
XMLHttp.open('POST', url, true); 

XMLHttp.onreadystatechange = RequestState; 

XMLHttp.send(parameter); 

답변

8

말하기, 그때는 정말 차이을 onreadystatechange 이벤트 핸들러는 경우가되지 않습니다 :

는 back'n'ya의 마음을 get'em하려면 open()을 호출하기 전에 open()과 send() 사이에 또는 send()를 호출 한 후에 할당됩니다. 여기 readyState가 사용할 수있는 값이다 :

  • 0 - 초기화되지. open() 메서드가 아직 호출되지 않았습니다.
  • 1 - 열기. open() 메서드가 호출되었지만 send()가 호출되지 않았습니다.
  • 2 - 보낸 사람 send() 메서드가 호출되었지만 응답을받지 못했습니다.
  • 3 - 수신 중입니다. 일부 응답 데이터가 검색되었습니다.
  • 4 - 완료. 모든 응답 데이터가 검색되어 사용 가능합니다. 개방 메소드가 호출되기 전에 onreadystatechange의 정의함으로써

, 그것은 그것이 개방 방법 후에 정의되는 경우 4. 0 ~ 모든 상태 변화를 검출 할 수있다, 만 1~4 검출한다 말한다. 이런 이유로 open() 전에 onreadystatechange 할당을 배치하는 것이 일반적입니다.

주의 할 점은 Internet Explorer 7에서 onreadystatechange가 도입되었을 때 이벤트 처리기 after calling open을 설정해야한다는 것입니다. 그렇지 않으면 오류가 발생합니다. 그러나 이것은 IE의 최신 버전에서 수정되었습니다.