안녕하세요.
오늘은 자바 스크립트의 Ajax에 대해서 공부해보겠습니다.
Ajax는 Asynchronous JavaScript and XML의 약자로 JavaScript와 XML을 이용하여 비동기적으로 정보를 교환하는 기법입니다.
Ajax가 가진 비동기적인 특성으로 인해 웹 페이지 전체를 로딩하지 않고 일부분만 로딩할 수 있어 빠르게 동작하는 동적인 웹 페이지를 만들 수 있습니다.
Ajax는 JSON, XML, HTML, TEXT 등의 여러 포맷을 JavaScript를 사용하여 XMLHttpRequest 객체로 서버와 통신하여 받은 데이터로 작업을 진행할 수 있습니다.
Ajax의 가장 큰 특징은 비동기식(Asynchronous) 통신 방식입니다.
동기식 처리 모델 VS 비동기식 처리 모델
동기식 처리 모델(Synchronous processing model)은 직렬적으로 작업을 수행합니다.
작업이 시작되면 하나씩 순차적으로 실행되며 해당 작업이 실행되는 동안에 다음 작업은 대기하게 됩니다.
동기식 처리 모델(Synchronous processing model)
비동기식 처리 모델(Asynchronous processing model or Non-Blocking processing model)은 병렬적으로 작업을 수행합니다.
작업이 시작되고 하나의 작업이 종료되지 않아도 다음 작업을 진행하게 됩니다.
비동기식 처리 모델(Asynchronous processing model)
Ajax는 이러한 비동기적 특성으로 인해 웹 페이지의 새로고침 없이 서버에 요청하여 받은 데이터로 작업을 진행할 수 있습니다.
Ajax는 기존의 사용되는 여러 기술들로 구성되어 있습니다.
Ajax의 동작은 Ajax 구성 요소들을 사용하여 자바스크립트 코드를 통해 웹 서버와 통신을 하게 됩니다.
Ajax를 이용한 웹 응용 프로그램과 기존의 웹 응용 프로그램의 동작 원리
Ajax를 구현하는 방법에는 XMLHttpRequest 객체, fetch API, jQuery의 $.ajax() 함수가 있습니다.
이번에는 그중에서 jQuery의 $.ajax() 함수의 예시를 공부해보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
$.ajax(
{
url: 'url', // 요청이 전송될 URL 주소(필수)
type: 'POST', // http 요청 방식(default: ‘GET’)
async: true, // 요청 시 동기화 여부. 기본은 비동기 요청(default: true)
cache: true, // 캐시 여부
timeout: 3000, // 요청 제한 시간(단위: ms)
data: { key: value }, // 요청 시 전송 데이터
processData: true, // 데이터를 컨텐트 타입에 맞게 변환 여부
contentType: 'application/json', // 요청 컨텐트 타입
dataType: 'json', // 응답 데이터 형식(명시하지 않을 경우 자동으로 추측)
beforeSend: function()
{
// XHR Header를 포함해서 HTTP Request를 하기전에 호출
},
success: function(data, status, xhr)
{
// 정상적으로 응답 받았을 경우에는 success 콜백 호출
// 파라미터에서 응답 바디, 응답 코드 그리고 XHR 헤더를 확인 가능
},
error: function(xhr, status, error)
{
// 응답을 받지 못하거나 데이터 형식을 확인할 수 없으면 error 콜백 호출
},
complete: function(xhr, status)
{
// success와 error 콜백이 호출된 후에 호출(ex. try - catch - finally의 finally 구문)
}
});
|
처음에는 Ajax를 jQuery의 $.ajax() 함수를 사용하여 구현했기 때문에 jQuery의 $.ajax() 함수가 Ajax인줄 알았는데 JavaScript와 XML을 이용한 비동기적 처리 방식 자체가 Ajax이라는 것을 알게 되었습니다.
$.ajax() 함수말고도 Ajax를 구현할 수 있는 여러 가지 방법들도 공부하면 좋을 것 같습니다.
참조
http://www.tcpschool.com/ajax/ajax_intro_works
https://developer.mozilla.org/ko/docs/Web/Guide/AJAX/Getting_Started
https://poiemaweb.com/jquery-ajax-json
https://opentutorials.org/course/1375/6851
https://velog.io/@surim014/AJAX%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
댓글 영역