AJAX

AJAX(Asynchronous Javascript And Xml)

psys 2020. 8. 3. 10:54
728x90
더보기

AJAX(아작스 또는에이작스)

JavaScript의 라이브러리

 

동기식과 비동기식

비동기는 비순차적, 동기는 순차적

효율은 비동식이 좋음

 

페이지 일부분만 바꾸고 싶을 때  ajax를 사용!

 

ajax를 사용할 수록 클라이언트 자원을 쓰므로 서버 부하가 줄어!

서버는 달라는 데이터만 주고 무엇을 할지에 대한 것은은 클라이언트에서

 

요즘은 xml보다는 json을 많이 사용(파일이 무겁고 불편하기 때문)

 

 

[spa(single page application)]

아작스부분만 변경!

페이지는 그대로 두고(고정) 페이지 뒤로 서버와 통신(데이터 전송방식은 xml)

>>Angular.js와 React.js(페이스북**)가 AJAX기능을 편리하게 사용할 수 있도록 만듦.

 

아작스 시작!

1. 통신객체 생성. 통신을 대신해줄 사람

    <script>
        var v_ajax = new XMLHttpRequest();
    </script>

 

2. 통신방법, 어떤것과 연결을 할 것인지, 비동기여부

        v_ajax.open("메소드", "URL", "비동기여부");

통신 메소드는 get과 post가 존재

URL은 일단 우리쪽 서버에 있는 data.txt

통신 방식은 무조건 비동기방식(true)

    <script>
         v_ajax.open("get", "data.txt", true);
    </script>
더보기

만약 false일때

    <script>
         v_ajax.open("get", "data.txt", false);
    </script>

 

3. 실행하라

    v_ajax.send("전달값: get방식일때 비워두거나 null을 씀");
    <script>
        v_ajax.send();
    </script>

 

4. 통신객체의 state변화를 체크

4-1.

0, 1은 찍힐 시간이 없어 찍히지 않음

체크가 먼저 나오기 때문에 비동기 방식임을 알 수 있다.

    <script>
        v_ajax.onreadystatechange = function () {
            console.log(v_ajax.readyState);      //통신객체의 상태값
        }
        console.log("체크")
    </script>

4-2.

상태값 0,1,2,3에는 관심 없음. 완료되었다는 4번만 관심

readyState
0 (uninitialized):request가 초기화되지 않음
1 (loading):(서버와의 연결이 성사됨
2 (loaded):서버가 request를 받음
3 (interactive):(request(요청)을 처리하는 중
4 (complete) :request에 대한 처리가 끝났으며 응답할 준비가 완료됨

통신은 최소 2개의 객체를 통신하는 것이므로 서버의 응답코드도 확인해야한다.

서버의 응답코드
1xx (정보): 요청을 받았으며 프로세스를 계속한다
2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다
    <script>
        v_ajax.onreadystatechange = function () {
            if (v_ajax.readyState == 4 && v_ajax.status == 200) {
                alert(v_ajax.responseText);
            }
        }
        console.log("체크")
    </script>

 

통신 성공

더보기
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX시작</title>
</head>

<body>
    <script>
        // AJAX Asynchronouse JavaScript XML(XML->JSON의 시대)
        // 낯설어도 일단 1번은 외워야 함

        // 1. 통신객체 생성. 통신을 대신해줄 사람
        var v_ajax = new XMLHttpRequest(); // 통신객체생성, 대신 통신해줄 사람


        // 2. 통신방법, 어떤것과 연결을 할 것인지, 비동기여부
        // v_ajax.open("메소드", "URL", "비동기여부");
        // 통신 메소드는 get과 post가 존재
        // URL은 일단 우리쪽 서버에 있는 data.txt
        // 통신 방식은 무조건 비동기방식
        v_ajax.open("get", "data.txt", true);   //통신 방식은 무조건 비동기방식

        // 3. 실행하라
        v_ajax.send();

        // 4. 통신객체의 state변화를 체크
        v_ajax.onreadystatechange = function () {
            // console.log(v_ajax.readyState);      //통신객체의 상태값

            // 상태값 0,1,2,3에는 관심이 없음
            // 완료되었다는 4번에만 관심이 있음
            // 통신의 최소 2개의 객체를 통신하는 것이므로 서버의 응답코드도 확인
            if (v_ajax.readyState == 4 && v_ajax.status == 200) {
                alert(v_ajax.responseText);  //서버로부터 전달받은 내용
            }
        }
        // 체크가 먼저 나오기 때문에 비동기 방식임을 알 수 있음
        console.log("체크")
    </script>
</body>

</html>

 

+)

alert(v_ajax.responseText)

alert(v_ajax.responseType)

 

 

alert(v_ajax.responseURL)

alert(v_ajax.responseXML)

 

'AJAX' 카테고리의 다른 글

AJAX 우회해서 네이버 가져오기  (0) 2020.08.04
(JSON이용)AJAX일반화  (0) 2020.08.03
AJAX예제  (0) 2020.08.03