비동기식 처리 모델과 Ajax
- 동기적 처리 모델 : 순차적으로 태스크 실행, 어떤 작업이 수행 중이면 다음 작업을 무조건 대기
- 비동기적 처리 모델 : 병렬적으로 태스크 실행, 태스크가 종료되지 않은 상태더라도 다른 태스크가 대기하지 않고 중간에 즉시 수행 (DOM이벤트, Timer함수..)
1. Ajax (Asynchronous JavaScript and XML)
- 자바스크립트를 이용해서 비동기적으로 서버와 브라우저가 데이터를 주고 받는 방식 
- 서버와 통신하기 위해 - XMLHttpRequest객체를 사용
- 페이지 전체를 로드하지 않아도 페이지의 일부만 로드하여 갱신한다 => 빠르다, 부드러운 화면표시효과   
 
2. XMLHttpRequest 객체
- 통신- 브라우저는 XMLHttpRequest객체를 이용해 Ajax요청을 생성하고 전송
- 서버에게서 받은 응답을 XMLHttpRequest객체가 처리
 
| 1 | // 1. XMLHttpRequest 객체 생성 | 
- XMLHttpRequest.open ( method, url)- 서버 요청 준비
- <form method = "METHOD" action = "URL">과 같다.
- method : HTTP 방식 (GET, POST, PUT, DELETE)
- url : 요청 보낼 URL - url정보는 METHOD의 단어가 들어가면 안 된다!
 
 
- XMLHttpRequest.onreadystatechange- 서버에 응답에 대한 처리, 이벤트 핸들러 (서버의 응답처리 단계마다 이벤트핸들러가 호출 됨) 1. XMLHttpRequest.readyState: 응답 상태의 값 - 0 (uninitialized) : request가 초기화되지 않음 - 1 (loading) : 서버와의 연결 성사됨 - 2 (loading) : 서버가 request를 받음 - 3 (interactive) : request(요청)을 처리하는 중 - 4 (DONE) : request에 대한 처리가 끝났으며 응답할 준비가 완료됨
 2.XMLHttpRequest.status: 응답 상태 코드 - 200 : 응답 완료 - 404 : NOt Found
 3.XMLHttpRequest.DONE: (4) request에 대한 처리가 끝났으며 응답할 준비가 완료됨
 4.XMLHttpRequest.responseText: 서버의 응답을 텍스트 문자열로 반환
 
 
- 서버에 응답에 대한 처리, 이벤트 핸들러 (서버의 응답처리 단계마다 이벤트핸들러가 호출 됨) 1. 
- XMLHttpRequest.send- 메소드의 인자로 전송할 데이터를 서버에 전달
- GET : 쿼리문자열로 데이버를 서버에 전송
- POST : Request Body에 담아 서버에 전송
 
- 예외 처리 : 통신 에러 상황일 때 - onreadystatechange메서드에서 예외에러를 발생시키게 된다.
- if .. then구문을- try .. catch로 바꾼다.
 
| 1 | try { | 
jQuery Ajax
2
3
4
5
6
7
8
9
10
11
12
13
14
> $.ajax({
> url: "./time3.php",
> dataType: "json",
> success: function(data) {
> var str = "";
> for (var name in data) {
> str += "<li>" + data[name] + "</li>";
> }
> $("div").html("<ul>" + str + "</ul>");
> }
> });
> });
>
