본문 바로가기
📌 Front End/└ jQuery

[jQuery] JQuery를 이용한 AJAX통신

by 쫄리_ 2023. 3. 10.
728x90
반응형

AJAX란 무엇인가?

  • 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능
  • 클라이언트와 서버간에 XML 데이터를 주고받는 기술이다.

비동기 방식이란?

  • 웹페이지를 리로드 하지 않고 데이터를 불러오는 방식
  • 웹페이지에서 기타 코드들을 요청할 경우, 웹 페이지를 리로드 하면서 불필요한 리소스가 낭비 되는데, 비동기 방식을 이용하면 필요한 데이터만 불러오면서 리소스 낭비를 줄일 수 있다.
  • AJAX는 XMLHttpRequest 객체를 통해 서버에 request 한다.
  • JSON이나 XML형태로 필요한 데이터만 받아 갱신하기 때문에 그만큼의 자원과 시간을 아낄 수 있다.

 

AJAX의 장점

  • 웹페이지 속도향상
  • 서버의 처리가 완료될 때까지 기다리지 않고 처리 가능
  • 기존 웹에서 불가능했던 UI를 가능하게 해줌
 

AJAX의 단점

  • 페이지 이동이 없는 통신으로 보안상의 문제가 있을 수 있음
  • 연속으로 데이터 요청시 서버 부하가 증가
  • 히스토리 관리가 안된다.
  • Script로 작성되서 디버깅이 용이하지 않음
  • HTTP 클라언트의 기능이 한정되어 있다.

Value Object를 생성합니다.

↓ Vo 소스 참조.

 

컨트롤러(controller)를 생성 후 Ajax에서 호출할 메서드(Method)를 생성합니다.

↓ 컨트롤러(Controller) 소스 참조.

 

성명, 성별, 나이, 전화번호를 가진 input 엘리먼트(element)와 아래에 제출 버튼을 생성 합니다.

↓ HTML 소스 참조.

<body>
    <div>        
        <section>
                <div>
                    <article>
                        <div>
                            <h2>ajax 설명 입니다.</h2>
                            <dl>
                                <dt>성명</dt>
                                <dd>
                                    <input type="text"  id="name" value="홍길동"/>
                                </dd>
                            </dl>
                            <dl>
                                <dt>성병</dt>
                                <dd>
                                    <input type="text"  id="sex" value="남자"/>
                                </dd>
                            </dl>
                            <dl>
                                <dt>나이</dt>
                                <dd>
                                    <input type="text"  id="age" value="20"/>
                                </dd>
                            </dl>
                            <dl>
                                <dt>전화번호</dt>
                                <dd>
                                    <input type="text"  id="tellPh" value="010-0000-0000"/>
                                </dd>
                            </dl>
                            <dl>
                                <dd>
                                    <input type="button" id="request" value="제출"/>
                                </dd>
                            </dl>
                            <br>

                        </div>
                    </article>
                </div>
        </section>
    </div>
</body>

 

'request'라는 id를 가진 버튼을 클릭 했을 때 서버에 전송할 데이터를 json타입으로 포맷(format)을 해주고 Ajax통신을 실행된다.

↓ 스크립트(SCRIPT) 소스 참조.

<script>

    // 'request'라는 id를 가진 버튼 클릭 시 실행.
    $("#request").click(function(){

            // json 형식으로 데이터 set
            var params = {
                      name      : $("#name").val()
                    , sex       : $("#sex").val()
                    , age       : $("#age").val()
                    , tellPh    : $("#tellPh").val()
            }

            // ajax 통신
            $.ajax({
                type : "POST",            // HTTP method type(GET, POST) 형식이다.
                url : "/test/ajax",      // 컨트롤러에서 대기중인 URL 주소이다.
                data : params,            // Json 형식의 데이터이다.
                success : function(res){ // 비동기통신의 성공일경우 success콜백으로 들어옵니다. 'res'는 응답받은 데이터이다.
                    // 응답코드 > 0000
                    alert(res.code);
                },
                error : function(XMLHttpRequest, textStatus, errorThrown){ // 비동기 통신이 실패할경우 error 콜백으로 들어옵니다.
                    alert("통신 실패.")
                }
            });
        });

</script>
  • type : GET 또는 POST 지정
  • url : ajax로 요청할 대상 URL 지정
  • async : 동기, 비동기 지정(boolean) - 비동기 true / 동기 false
  • dataType : 받아올 테이터의 자료형 지정
  • data : 요청 할때 보낼 데이터 지정
  • success : ajax 요청 성공시 실행할 이벤트 지정 (function, array)
  • error(xhr, status, error): ajax 요청 실패 시 실행할 이벤트 지정(function)
  • complete : ajax 요청 완료시 실행할 이벤트 지정(function)

728x90
반응형