Web/JavaScript

[JavaScript] Ajax란? 비동기서버통신

jinsiri 2019. 7. 26. 19:52

JavaScript는 Ecma라는 표준을 따르고 있다.

- HTML 문서 조작

- 유효성 검사

- function은 1급객체

 

Ajax (Asynchronous JavaScript and XML) 

- 서버데이터를 가져와서 문서 조작에 사용하는 것을 말한다.

- 다른 페이지를 참조하는 것

- html과 자바의 통신을 담당하는 것

- XMLHttpRequest라는 객체로 서버에 필요한 데이터 요청 가능

- Text, Xml, HTML

- 비동기 서버통신이다.

- 핵심코드

 

동기 - 요청이 들어오면 순차적으로 실행

비동기 - 요청을 기다리지 않고 실행하는것

 

open함수- 요청의 초기화. GET/POST선택

send함수- post 웹서버 요청처리 (요청 응답시 시간이 지연된다)

onreadystatechange - 서버응답처리 (요청 ~ 응답 사이의 상태들)

- readyState

0 : UNINITIALIZED - 객체만 생성되고 아직 초기화

1 : LOADING - osend메소드호출 - 파라미터 전달 (요청)

2 : LOADING - send메소드(파라미터전달) 실행상태

3 : INTERACTIVE(상호작용) - 데이터 일부를 받은상태, 

4 : COMPLETED - 데이터를 전부 받은 상태

 

200: 페이지요청성공

403: 권한 없음

404: 페이지 없음

405: 요청한 메소드(doGet, doPost)가 준비되지 않았음

500: 서버오류발생

 

Ajax는 UTF-8을 너무 좋아해~~!!

 

- XMLHttpRequest(서버통신객체) xhr

- 자바 클래스로 생각하면된다.

- 이 안에는 속성과 메소드가 존재한다.

 

속성

- readyState 

- onreadystatechange : 이벤트 속성(readyState 변경되었을때)

- status: 서버의 상태

 

메소드 **

- open('HTTP요청방식', '요청URL','비동기방식') **

- send('요청URL에게 전달할 데이터') **

 

<클라이언트>                               <서버>
- JavaScript                         - JSP,Servlet(자바)
- 데이터요청                                                       - 데이터 준비, 데이터 출력 out.print(데이터)
          1.open(URL요청과 get방식의 데이터)  
          ---------------------------->

          2.send(post방식의 데이터)  
          ---------------------------->
          
          3.responseText 또는 responseXML
          <----------------------------
           
※ 위의 1,2,3번을 실행하기 위해서는 XMLHttpRequest(xhr)객체가 필요!!
※ 3번(서버데이터 받기)은 콜백함수에 정의!!
                   ------
                                 이벤트 발생 후 실행하는 함수
                -----
                URL요청       

              

responseText의 자료형은 String

responseXML 의 자료형은 Document

setTimeout

window.onload

반응형