[모던 JS Deep Dive] 43장. Ajax

Jinny·2023년 11월 3일

43.1 Ajax(Asynchronous Javascript and XML)

Ajax란 자바스크립트를 사용하여 브라우저가 서버에게 비동기 방식으로 데이터를 요청하고 서버가 응답한 데이터를 수신하여 웹페이지를 동적으로 갱신하는 프로그래밍 방식을 뜻한다.

Ajax는 브라우저에서 제공하는 Web API인
XMLHttpRequest 객체를 기반으로 동작한다.
이 객체는 HTTP 비동기 통신을 위한 메소드와 프로퍼티를 제공한다.

이전의 웹페이지는 완전한 HTML를 서버로부터 전송받아 웹페이지 전체를 처음부터 다시 렌더링하는 방식으로 동작했다. 변경할 필요가 없는 부분까지 처음부터 다시 렌더링이
되기 때문에 화면이 순간적으로 깜박이는 현상이 발생하기도 했다.

Ajax의 등장으로 서버로부터 웹페이지의 변경이 필요한 데이터만 비동기 방식으로 전송받아 변경할 필요가 없는 부분은 다시 렌더링하지 않고, 변경할 필요가 있는 부분만 렌더링하는 방식이 가능해졌다. 따라서 부드러운 화면 전환이 가능해졌다.

43.2 JSON

JSON은 클라이언트와 서버 간의 HTTP 통신을 위한 데이터 포맷이다.

43.2.1 JSON 표기 방식

JSON은 JS 객체 리터럴과 유사하게 키와 값으로 구성된 텍스트이다.

{
  "name":"Jeong",
   "age" : 24,
   "hobby" :["exercise","walk"]
}
  • JSON 키는 반드시 큰따옴표(작은 따옴표 ❌)로 묶어야 한다.
  • 값은 객체 리터럴과 같은 표기법을 그대로 사용 가능하다. 단, 문자열은 반드시 큰 따옴표로 묶어야 한다.

43.2.2 JSON.stringify

객체를 JSON 포맷의 문자열로 변환할 때 사용된다.
클라이언트가 서버로 객체를 전송할 때 객체를 문자열화해야하는데 이를 직렬화라 한다.

const obj = {
     name:'Jeong',
  	 age : 24,
     hobby :["exercise","walk"]
}
console.log(JSON.stringify(obj));
//'{"name":"Jeong","age":24,"hobby":["exercise","walk"]}'

➡️ 객체를 JSON 포맷의 문자열로 변환한다.

const arrs = [
  {content:'HTML', id:1},
  {content:'CSS', id:2},
  {conent:'Javascript', id:3}
 ];

JSON.stringify(arrs);
//'[{"content":"HTML","id":1},{"content":"CSS","id":2},{"conent":"Javascript","id":3}]'

➡️ 객체뿐 아니라 배열도 JSON 포맷의 문자열로 변환한다.

43.2.3 JSON.parse

JSON 포맷의 문자열을 객체로 변환할 때 사용된다. 이
문자열을 객체로 사용하려면 JSON 포맷의 문자열을 객체화해야 하는데 이를 역직렬화라 한다.

43.3 XMLHttpRequest

브라우저는 주소창이나 HTML의 form 태그 또는 a 태그를 통해 HTTP 요청 전송 기능을 기본적으로 제공한다.
XMLHttpRequest 객체는 HTML 요청 전송/응답 수신을 위한 다양한 메서드와 프로퍼티를 제공한다.

43.3.1 XMLHttpRequest 객체 생성

XMLHttpRequest 생성자 함수를 호출해 생성한다.
이 객체는 브라우저에서 제공하는 Web API로 브라우저 환경에서만 정상적으로 실행된다.

const xhr = new XMLHttpRequest();

43.2.2 XMLHttpRequest 객체의 프로퍼티와 메서드

XMLHttpRequest 객체의 프로포타입 프로퍼티

프로토타입 프로퍼티설명
readyStateHTTP 요청의 현재 상태를 나타내는 정수
statusHTTP 요청에 대한 응답 상태를 나타내는 정수
statusTextHTTP 요청에 대한 응답 메시지를 나타내는 문자열
responseTypeHTTP 응답 타입
responseHTTP 요청에 대한 응답 몸체
responseText서버가 전송한 HTTP 요청에 대한 응답 문자열

XMLHttpRequest 객체의 이벤트 핸들러 프로퍼티

이벤트 핸들러 프로퍼티설명
onreadystatechangereadyState 프로퍼티 값이 변경된 경우
onloadstartHTTP 요청에 대한 응답을 받기 시작한 경우
onprogressHTTP 요청에 대한 응답을 받는 도중 주기적으로 발생
onabortabort 메서드에 의해 HTTP 요청이 중단된 경우
onerrorHTTP 요청에 에러가 발생한 경우
onloadHTTP 요청이 성공적으로 완료한 경우
ontimeoutHTTP 요청 시간이 초과한 경우
onloadendHTTP 요청이 완료한 경우,HTTP 요청이 성공 또는 실패하면 발생

0개의 댓글