Just do IT
Published 2021. 7. 13. 16:44
Ajax Tutorial Programing/JavaScript

Ajax란? 

Ajax는 Asynchronous JavaScript and XML의 약자이다.

비동기 자바 스크립트와 XML을 의미합니다.

Ajax는 서버와 클라이언트 사이에서 페이지 전체를 새로고침 하지 않고 데이터를 주고 받을 수 있도록 해줍니다. 

페이지가 새로고침이 되지 않기 대문에 페이지에 있는 모든 데이터가 아닌 특정 데이터만을 서버에 전송할 수 있으며 이는 어플리케이션을 더 빠르고 효율적으로 사용하며 운영할 수 있게 해줍니다.

 

Ajax는 JavcScript, DOM, XML, HTML/XHTML, CSS, XMLHttpRequest등과 같이 다양한 기능들과 함께 사용되는 기능입니다. 

** DOM : http://tcpschool.com/javascript/js_dom_concept

** HTML/XHTML, CSS : 뷰 페이지를 구현하는 기능

** XML or JSON : 서버와 데이터를 주고 받을 때 사용되는 기능

                       (JSON - Javascript Object Notation : XML과 비슷하지만 보다 짧고 빠르다)

** XMLHttpRequest : 비동기 통신을 위한 기능 

** JavaScript : 전체적인 기능으로 사용되기도 하지만 개별적으로는 클라이언트(사용자) 페이지의 확인을 

                   위해 사용 (예: 빈칸 확인 등)

 

다양한 웹사트에서 Ajax를 사용하고 있습니다. 예) gmail, facebook, twitter, google map, youtube 등등


동기 (Synchronous) & 비동기 (Asynchronous)

Ajax를 공부하기 전에 동기화와 비동기화에 대해 알려드리겠습니다.

 

▶ 동기 (Synchronous / Classic Web-Application Model)

    ** Synchronous의 사전적 의미는 "동시에 발생하는" 입니다.

    클라이언트(사용자)가 서버로 요청을 할 때 (회원가입, 새로고침 등등) 요청이 완료가 될 때까지

   사용자는 다른 요청을 할 수가 없습니다.

    이미지 -> https://www.javatpoint.com/understanding-synchronous-vs-asynchronous

 

비동기 (Asynchronous / AJAX Web-Application Model)

    ** Asynchronous의 사전적 의미는 "동시에 발생 혹은 존재하지 않는" 입니다.

       클라이언트(사용자)가 서버로 요청을 하여 서버가 요청을 완료할 때 까지 사용자는

       또 다른 요청을 할 수 있습니다.

       예를 들어 회원가입 시 아이디 중복 검사, 이메일 인증 등의 기능은 페이지의 새로고침

       없이 진행되어야 하기 때문에 비동기 통신을 하면 인증, 중복검사의 기능 부분만 따로 서버로

       요청을 보낼 수 있습니다.

      이미지 -> https://www.javatpoint.com/understanding-synchronous-vs-asynchronous


XMLHttpRequest 

XMLHttpRequest는 클라이언트와 서버 사이의 비동기 통신을 위해 사용되는 객체입니다.

객체 작동되는 순서

    1. 백그라운드에서 클라이언트로부터 데이터를 받아서 서버로 전송

    2. 서버로부터 데이터에 대한 답을 받음

    3. 받은 데이터로 웹페이지 업데이트 -> 업데이트 시 페이지가 새로고침/reload 되지 않는다.

 

XMLHttpRequest 객체의 속성

 

속성 (Property) 설명 (Description)
onReadyStateChange XMLHttp의 상태(readystate)가 변경될 때 마다(onchange) 자동으로 호출되는 함수입니다.
동기 통신에서는 사용할 수 없다
readyState XMLHttpRequest 객체의 현재 상태를 보여줍니다.

0~4 까지의 상태 변화
0 UNSENT XMLHttpRequest 객체가 생성됨
1 OPENED open() 메소드가 성공적으로 실행됨
2 HEADERS_RECEIVED 모든 요청에 대한 응답이 도착함 
3 LOADING 요청한 데이터를 처리중임
4 DONE 요청한 데이터의 처리가 완료되어 응답할 준비가 완료됨
responseText text 형식으로 응답함
responseXML XML 형식으로 응답함

 

XMLHttpRequest 객체의 메소드

메소드 (Method) 설명 (Description)
void open(전달방식, URL 주소, 동기여부) 전달방식(method) : GET 방식과 POST방식 중 하나 선택
  URL 주소 : 요청을 처리할 서버의 파일 주소
  동기여부 : 동기식(sync), 비동기식(async)일지 확인 
void send() GET 방식으로 서버로 요청 전달 
void send(String) POST 방식으로 서버로 요청 전달
setRequestHeader(header, value) 요청 헤더를 작성할 수 있는 메소드
XMLHttpRequest인스턴스.setRequestHeader(헤더이름, 헤더값)
*HTTP 규약에서 사용하는 헤더 이름은 모두 첫 글자가 영문 대문자입니다

Ajax서버와 어떻게 통신하나요?

Ajax는 XMLHttpRequest 객체를 통해서 서버와 통신을 합니다.

아래 이미지와 설명을 통해 어떻게 통신이 이루어 지는지 알려드리겠습니다.

이미지 -> https://www.javatpoint.com/how-ajax-works

 

통신이 이루어지는 순서

   1. 사용자가 홈페이지에서 요청 보냄 -> JavaScript가 호출되며 XMLHttpRequest객체 호출됨

   2. XMLHttpRequest 객체가 서버로 HTTP 요청을 보냄

   3. 서버가 JSP, PHP, Servlet, ASP.net 등을 통해 데이터베이스와 통신함

   4. 데이터를 검색 및 회수

   5. 서버가 XMLHttpRequestdprp XML 데이터 혹은 JSON 데이터를 보냄

   6. 돌아온 데이터를 HTML 과 CSS가 브라우저에 출력해줌

'Programing > JavaScript' 카테고리의 다른 글

JavaScript (EventListener)  (0) 2021.08.06
JavaScript (Parameter)  (0) 2021.08.05
JavaScript (Function)  (0) 2021.08.04
JavaScript (Alert)  (0) 2021.08.02
JavaScript (Selector)  (0) 2021.08.01
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!