- 
                            
                            AJAX, Asynchronous Javascript with XMLFront-End/Javascript 2020. 9. 16. 11:45
Ajax 정의
- 
(XML을 이용한) 비동기식 자바스크립트
 - 
HTTP 통신을 자바스크립트를 이용하여 비동기식으로 수행하는 것
 - 
자바스크립트로 HTTP요청을 보내고 XML 또는 JSON 파일 형식으로 응답을 받는 기술
 - 
자바스크립트의 내장객체인 XMLHttpRequest 를 사용
 
Ajax 사용 예 )
- 
이미 사용중이거나 탈퇴한 아이디입니다. (onblur, onfocus 이용 // onblur에 Ajax사용)
 - 
처음에는 안보여주다가 버튼클릭시 가져오는식으로 사용할때(게시판+댓글)
 
+XHR 객체
- 
XMLHttpRequest 객체
 - 
AJAX 통신을 하기 위한 자바스크립트 기본 내장 객체
 - 
IE 예전버전에서는 존재하지 않는 객체이며 ActiveX를 이용해 구현된다(크로스브라우징 처리가 필요)
 - 
개발자 도구 네트워크 > 콘텐츠 형식 필터에서 Ajax 호출시 전달받는 응답부분을 확인할 수 있다.
 
+XHR 객체 속성(property)
readyState
- 
XHR 객체는 준비 - 전송 - 완료 단계를 거친다.
 - 
각 단계를 표현하는 속성값
- 
0 : UNSENT - open() 호출 전(XHR 객체 생성한 단계)
 - 
1 : OPENED - open() 호출 후 ~ 응답을 받기 전
 - 
2 : HEADERS_RECEIVED - send() 호출 후 ~ 응답을 받기 전 -- 응답 메시지의 header를 받음
 - 
3 : LOADING - 다운로드 중 (response 메시지를 받는 도중
- 
응답 메시지의 body를 받음
 - 
Loading 상태에 돌입하면서 XHR.onprogress 이벤트 동작
 
 - 
 - 
4 : DONE - XHR 동작 완료(요청과 응답이 완료된 상태)
- 
DONE 상태 시 XHR.onload 이벤트 동작함
 
 - 
 
 - 
 - 
사용 예제)
- 
onprogress와 onload를 이용하여 Modal(뒤에 창 못눌리게 하는 것(팝업)) 처리 가능
- 
=> onprogress때는 로딩중 으로 마스킹하고 onload가 발생하면 다시 풀어줌
 
 - 
 
 - 
 
onreadystatechange
- 
readyState가 변경될 때마다 발생하는 이벤트 처리 코드
 - 
callback 함수로 값을 지정한다
 
responseText
- 
응답 데이터를 String타입으로 추출(파싱)하는 속성
 
responseXML
- 
응답 데이터를 XML타입으로 추출(파싱)하는 속성
 
status
- 
HTTP 응답 상태코드
 - 
readyState : 4(DONE) 이후 응답상태에 따라 결과 처리 설정에 사용함
 
statusText
- 
HTTP 응답 메시지
- 
404, Not Found
 - 
202, OK.
 - 
405, Method Not Allowed.
 - 
500, Internal Server Error.
 
 - 
 
+XHR 객체 함수
void open(String method, String url, [, boolean asynch])
- 
AJAX 요청 정보를 초기화하는 함수
 - 
요청 정보를 설정하는 함수
 - 
method - HTTP 요청 메소드 지정
 - 
url - HTTP 요청 URL 지정
 - 
asynch - 동기(false), 비동기(true) [기본값: true]
 - 
**asynch를 동기(false)로 설정하면 요청에 대한 응답이 완료될 때까지 브라우저는 대기상태(BLOCKED)가 된다
 
void send(null)
- 
GET 요청 전송 함수
 - 
파라미터는 open()함수의 url 매개변수에 쿼리스트링으로 포함시킨다
 
void send(params)
- 
POST 요청 전송 함수
 - 
파라미터를 쿼리스트링 형식의 문자열로 매개변수로 추가한다
 
'Front-End > Javascript' 카테고리의 다른 글
NVM Window 설치 및 사용방법 (0) 2022.11.27 jquery ajax 호출시 Request Url 파라미터 뒤에 언더바(_) 붙는 이유 (0) 2022.02.21  -