2017-10-01 3 views
0

나는 AJAX에 익숙하지 않다. 응답이 준비되면 핸들러 함수가 실행된다는 것을 알기 때문에.AJAX에서 요청하기 전에 응답을 처리하는 이유는 무엇입니까?

xhttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      document.getElementById("demo").innerHTML = 
      this.responseText; 
     } 
    }; 

그리고 우리가 만들고 아직 요청을 전송하지 않으면 서

xhttp.open("GET", url, true); 
xhttp.send(); 

는 의미가 응답을 처리 할 수 ​​있도록 않는 우리의 요청을 보내!? 감사합니다

+0

[상태 변경 전의 AJAX onreadystatechange 실행 중 중복 가능한 항목이 있습니까?] (https://stackoverflow.com/questions/26965435/ajax-onreadystatechange-executing-before-post-state-change) –

+2

요청을 보내기 전에 응답. 응답이 반환 될 때 _ 호출 될 함수를 정의하고 있습니다. 큰 차이. – Andy

+3

자바 스크립트의 비동기 성질에 오신 것을 환영합니다. 모든 것이 한 입 크기로 이루어집니다. 먼저 응답을 처리 할 코드를 설정 한 다음 응답을 보냅니다. 처리기는 ajax 요청이 데이터를 반환 할 때 발생합니다. – Mikkel

답변

0

응답 이벤트 처리기가 설정되어 있지 않은 동안 응답을받을 수 있으므로 이해가됩니다. 또한, 우리는 즉시 handle the response을하지 않지만 응답을 다루는 핸들러 함수를 정의합니다.

반면에 99 %의 경우에는 send() 다음에 처리기를 정의하는 데 아무런 실수가 없습니다. 요청이 즉시 실패했는지 여부를 신경 쓰지 않습니다.

다른 방법이 없다면 요청을 보낸 후에 응답 처리기를 정의하는 것이 아니라 다른 모든 경우에 적절하고 안전한 방법으로 처리하십시오.

관련 문제