개발자 성장일지

제 10장 jQuery AJAX 통신 본문

JavaScript

제 10장 jQuery AJAX 통신

hdigimon 2023. 12. 16. 23:27

1. AJAX 통신

  • AJAX(Asynchronous Javascript And XML)는 비동기식으로 JSON 또는 XML 데이터를 교환하기 위한 통신 기술
  • 동기(Synchronous)는 순서대로 처리하는 방식, 비동기(Asynchronous)는 순서 없이 동시에 처리하는 방식
  • AJAX 통신은 클라이언트에게 처리를 전가해 웹 페이지 속도가 향상되고 서버의 부담을 줄여 줌

 

2. jQuery Ajax 함수

  • 일반적으로 AJAX 통신은 제이쿼리 ajax 함수를 이용
  • $.ajax({옵션})

 

3. jQuery Ajax 관련 함수

  • jQuery 다양하게 AJAX 관련 함수를 제공

 

 

코드

더보기

Ajax 데이터 요청

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>1_Ajax 데이터 요청</title>
    <!--
        날짜 : 2022/10/19
        이름 : 황원진
        내용 : Ajax 데이터 요청 실습하기

        AJAX(Asynchronous Javascript And XML)
         - JSON 또는 XML 형태의 데이터를 비동기적으로 전송하기 위한 통신기술
         - 서버로부터 데이터를 요청하고 클라이언트에서 화면처리를 수행
         - 서버로부터 데이터를 요청하는 것을 API라고 한다.
    -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
    <script>
        $(function(){
            
            $('button').click(function(){
                // 데이터 요청
                $.ajax({
                    url:'http://chhak.or.kr/data/user.json',
                    type:'get',
                    dataType:'json',
                    success: function(data){
                        console.log(data);
                        // 데이터 출력
                        $('p > span:eq(0)').text(data.uid);
                        $('p > span:eq(1)').text(data.name);
                        $('p > span:eq(2)').text(data.hp);
                        $('p > span:eq(3)').text(data.age);
                    },
                    error: function(){
                        console.log('error!');
                    }
                });
            });
        });


    </script>
</head>
<body>
    <h3>Ajax 데이터 요청</h3>

    <button>데이터 요청</button>
    <p>
        아이디 :  <span></span><br>
        이름 :  <span></span><br>
        휴대폰 :  <span></span><br>
        나이 :  <span></span><br>
    </p>
    
</body>
</html>

 

Ajax 데이터 처리

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>2_Ajax 데이터 처리</title>
    <!--
        날짜 : 2022/10/19
        이름 : 황원진
        내용 : Ajax 데이터 처리 실습하기
    -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
    <script>
        $(function(){
            $('button').click(function(){
                $.ajax({
                    url:'http://chhak.or.kr/data/users.json',
                    type:'get',
                    dataType:'json',
                    success:function(data){
                        console.log(data);

                        // 데이터 출력
                        for(let user of data.users){
                            let tags = `<tr>
                                            <td>${user.uid}</td>                
                                            <td>${user.name}</td>                
                                            <td>${user.hp}</td>                
                                            <td>${user.age}</td>                
                                        </tr>`;
                            $('table').append(tags);
                        }
                    }
                });
            });
        })
    </script>
</head>
<body>
    <h3>Ajax 데이터 처리</h3>
    <button>데이터 요청</button>

    <table border="1">
        <tr>
            <td>아이디</td>
            <td>이름</td>
            <td>휴대폰</td>
            <td>나이</td>
        </tr>
    </table>
</body>
</html>

 

Ajax 데이터 전송

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>3_Ajax 데이터 전송</title>
    <!--
        날짜 : 2022/10/19
        이름 : 황원진
        내용 : Ajax 데이터 전송 실습하기
    -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
   <script>
        $(function(){
            $('input[type=submit]').click(function(e){
                e.preventDefault();

                // 입력한 데이터 가져오기
                let uid = $('input[name=uid]').val();
                let name = $('input[name=name]').val();
                let hp = $('input[name=hp]').val();
                let age = $('input[name=age]').val();

                // 전송 데이터 생성(JSON)
                let jsonData = {
                    "uid":uid,
                    "name":name,
                    "hp":hp,
                    "age":age,
                };
                // 데이터 전송(AJAX)
                $.ajax({
                    url:'https://www.naver.com',
                    type:'get',
                    data: jsonData,
                    dataType:'json',
                    success: function(data){
                        console.log(data);
                    }
                });

            });
        });
    </script>
</head>
<body>
    <h3>Ajax 데이터 전송</h3>
    
    <form action="#">
        <input type="text" name="uid" placeholder="아이디 입력"><br/>
        <input type="text" name="name" placeholder="이름 입력"><br/>
        <input type="text" name="hp" placeholder="휴대폰 입력"><br/>
        <input type="text" name="age" placeholder="나이 입력"><br/>
        <input type="submit" value="전송하기"><br/>
    </form>
    
</body>
</html>

 

XML 데이터 요청

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>4_XML 데이터 요청</title>
    <!--
        날짜 : 2022/10/19
        이름 : 황원진
        내용 : XML 데이터 요청 실습하기

    -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
    <script>
        $(function(){
            
            $('button').click(function(){
                // 데이터 요청
                $.ajax({
                    url:'http://chhak.or.kr/data/user.xml',
                    type:'get',
                    dataType:'xml',
                    success: function(data){
                        console.log(data);

                        let xml = $(data);
                        // XML 파싱
                        $('p > span:eq(0)').text(xml.find('uid').text());
                        $('p > span:eq(1)').text(xml.find('name').text());
                        $('p > span:eq(2)').text(xml.find('hp').text());
                        $('p > span:eq(3)').text(xml.find('age').text());
                    },
                    error: function(){
                        console.log('error!');
                    }
                });
            });
        });


    </script>
</head>
<body>
    <h3>XML 데이터 요청</h3>

    <button>데이터 요청</button>
    <p>
        아이디 :  <span></span><br>
        이름 :  <span></span><br>
        휴대폰 :  <span></span><br>
        나이 :  <span></span><br>
    </p>
    
</body>
</html>

 

XML 데이터 처리

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>2_Ajax 데이터 처리</title>
    <!--
        날짜 : 2022/10/19
        이름 : 황원진
        내용 : XML 데이터 처리 실습하기
    -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
    <script>
        $(function(){
            $('button').click(function(){
                $.ajax({
                    url:'http://chhak.or.kr/data/users.xml',
                    type:'get',
                    dataType:'xml',
                    success:function(data){
                        console.log(data);

                        // 데이터 출력
                        let users = $(data).find('user');

                        users.each(function(){
                            let tags = `<tr>
                                            <td>${$(this).find('uid').text()}</td>                
                                            <td>${$(this).find('name').text()}</td>                
                                            <td>${$(this).find('hp').text()}</td>                
                                            <td>${$(this).find('age').text()}</td>                
                                        </tr>`;
                            $('table').append(tags);
                        });

                    }
                });
            });
        })
    </script>
</head>
<body>
    <h3>XML 데이터 처리</h3>
    <button>데이터 요청</button>

    <table border="1">
        <tr>
            <td>아이디</td>
            <td>이름</td>
            <td>휴대폰</td>
            <td>나이</td>
        </tr>
    </table>
</body>
</html>

 

 

※개발시 크롬에서 유용하게 쓰이는 플러그인

'JavaScript' 카테고리의 다른 글

제 9장 jQuery 애니메이션  (0) 2023.12.12
제 8장 jQuery 이벤트  (0) 2023.12.12
제 7장 jQuery 함수  (0) 2023.12.12
제 6장 jQuery 개요 및 선택자  (0) 2023.12.12
제 5장 객체  (1) 2023.12.12