기초
개요
AJAX (Asynchronous JavaScript And XML) — 비동기 자바스크립트와 XML
- 페이지 전체를 리프레쉬 하지 않고도 수행되는 '비동기성' : 필요한 데이터만 처리
- 서버와 통신하기 위해 XMLHttpRequest 객체를 사용
비동기적인 웹 애플리케이션 제작을 위해 html, css, DOM, javascript, xml, xslt,, XMLHttpRequest 등과 조합을 이용하는 웹 개발 기법을 Ajax라고 합니다.
Ajax 프레임워크
Prototype
script.aculo.us
dojo
jQuery
Ajax 구성 요소
Html과 CSS : 웹 페이지의 표현
DOM 모델 : 데이터에 접근 하거나 화면 구성을 동적으로 조작
JSON 이나 XML : 데이터의 교환
XMLHttpRequest : 웹서버와의 비동기적 통신
JavaScript : 사용자의 작업 흐름을 제어하는 데 사용
Ajax 동작 원리
1. 사용자에 의해 요청 이벤트 발생
2. 이벤트 핸들러에 의해 자바스크립트 호출
3. XMLHttpRequest 객체를 사용하여 서버로 요청 -> 서버의 응답을 기다릴 필요가 없습니다.
4. 서버는 전달받은 XMLHttpRequest객체로 Ajax 요청을 처리
5. 서버는 처리한 결과를 HTML, XML, JSON형태의 데이터로 웹 브라우저에 전달
6. 전달받은 데이터로 웹 페이지의 일부분만을 갱신하는 자바스크립트를 호출 -> 갱신
XMLHttpRequest
XMLHttpRequest 객체
Ajax의 핵심적인 구성 요소로 대부분의 웹브라우저는 XMLHttpRequest 객체를 내장하고 있습니다.
1. XMLHttpRequest 객체 사용 : 익스플로러 7이상, 크롬, 파이어폭스, 사파리, 오페라
var 변수명 = new XMLHttpRequest();
2. ActiveXObject 객체 사용 : 익스플로러 5, 6
var 변수명 = new ActiveXObject("Microsoft.XMLHTTP");
1
2
3
4
5
6
7
8
9
10
|
var httpRequest;
function createRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
|
cs |
서버에 요청(request)
open() 메소드 : 서버로 보낼 Ajax 요청의 형식을 설정
open(전달방식, URL주소, 동기여부)
send() 메소드 : 작성된 Ajax요청을 서버로 전달
GET방식
1
2
|
httpRequest.open("GET", "/examples/media/request_ajax.php?city=Seoul&zipcode=06141", true);
httpRequest.send();
|
cs |
POST방식 : open메소드 3번째 인자 true면 비동기식 요청
1
2
3
|
httpRequest.open("POST", "/examples/media/request_ajax.php", true);
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpRequest.send("city=Seoul&zipcode=06141");
|
cs |
서버로부터의 응답(reponse)
readyState 프로퍼티 : XMLHttpRequest 객체의 현재 상태를 나타냅니다.
- UNSENT (숫자 0) : XMLHttpRequest 객체 생성
- OPENED (숫자 1) : open메서드 성공
- HEADERS_RECEIVED (숫자 2) : 모든 요청에 응답
- LOADING (숫자 3) : 요청한 데이터 처리 중
- DONE (숫자 4) : 요청한 데이터 처리가 완료
status 프로퍼티 : 서버의 문서 상태
- 200 : 서버에 문서 존재
- 404 : 서버에 문서 존재 안함.
onreadystatechange 프로퍼티 : readyState 프로퍼티 값이 변할 때마다 자동으로 호출되는 함수
HTTP 헤더
HTTP 요청 헤더
클라이언트와 서버 사이에 HTTP 요청과 응답은 HTTP 헤더를 사용하여 수행됩니다.
Ajax에서는 요청을 보내기 전 setRequestHeader() 메소드를 사용해 HTTP 요청 헤더를 작성합니다.
HTTP 응답 헤더
Ajax에서는 HTTP응답 헤더 내용을 2개의 메소드를 이용하여 확인합니다.
1. getAllResponseHeaders() 메소드 : HTTP 응답 헤더의 모든 헤더를 문자열로 반환
2. getResponseHeader() 메소드 : HTTP 응답 헤더 중 인수로 전달받은 이름과 일치하는 헤더의 값을 반환
Content-Type 헤더
미설정시 text/html 타입으로 자동 설정
Ajax 활용
주기적으로 Ajax 요청
주기적으로 Ajax요청을 보내도록 설정하여 실시간 서비스처럼 보이게 만들 수 있습니다.
데이터가 변경된 경우에만 Ajax 응답하도록 설정하여 자원 낭비를 막습니다.
문서 타입별 응답 데이터 확인
responseText 프로퍼티 : 서버에 요청하여 응답으로 받은 데이터를 문자열로 반환
responseXML 프로퍼티 : 서버에 요청하여 응답으로 받은 데이터를 XML DOM객체로 반환
Ajax 메소드
$.ajax([옵션]) 메소드 : 제이쿼리 Ajax 메소드
- url : 전송 페이지
- type : 전송방식
- data : 전송할 데이터
- dataType : 요청한 데이터 타입
- async : 비동기식 실행 (Deprecation)
- success : function(result) {} : 전송 성공 시 실행
- error : 통신의 문제가 있을 경우
$.get() 메소드 : 서버에 GET방식의 HTTP 요청
$.POST() 메소드 : 서버에 POST방식의 HTTP 요청
$.getScript : 웹페이지에 스크립트를 추가
$.getJSON : 응답으로 JSON 파일을 전송받음
$load() 메소드 : 선택한 요소에서 호출하는 유일한 jquery Ajax 메소드
관련포스트
'웹 개발 > 웹프로그래밍' 카테고리의 다른 글
코드이그나이터 | 모델-뷰-컨트롤러 (MVC) (0) | 2020.11.05 |
---|---|
코드이그나이터 | 개념 (2) | 2020.11.03 |
PHP | 기초문법 (0) | 2020.10.20 |
XML 기초 특징 구조 (0) | 2020.09.29 |
JavaScript | html2canvas 캡쳐 사용방법 (0) | 2020.09.29 |
JavaScript | jQuery 셀렉터와 동작 (0) | 2020.09.04 |
JavaScript | 자바스크립트 개발도구 (0) | 2020.09.04 |
JavaScript | 자바스크립트 그래픽 (0) | 2020.09.03 |
댓글