ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • XMLHttpRequest 요청하기
    Dev_Tip/JavaScript_Tip 2021. 3. 11. 17:15
    반응형
    <!DOCTYPE html>
    <head>
        <meta charset='UTF-8'>
        <meta name='viewport'
              content='width=device-width, initial-scale=1.0'>
    
        <script>
            // 요청결과
            var result;
    
            // API요청하기
            function loadAPI() {
    
                // XMLHttpRequest 객체 생성
                var xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function () {
    
                    // readyState : 4, 요청 완료 및 응답 준비
                    // status : 200, 요청 완료
                    if( this.readyState == 4 && this.status == 200 ) {
    
                        // 응답데이터를 JSON객체로 변환
                        result = JSON.parse(this.responseText);
                        console.log( result );
    
                        // 결과값을 테이블 로우에 추가
                        drawRow( 'resultTable', result );
    
                        // JSON객체의 크기
                        var resultLength = document.getElementById('resultLength');
                        console.log( 'JSON객체의 크기 : ' + Object.keys(result).length );
                        resultLength.innerHTML = '응답데이터 크기 : ' + Object.keys(result).length;
                        
                    }
                };
    
                // 요청정보작성
                xhttp.open('GET', 'https://pokeapi.co/api/v2/pokemon/ditto', true);
                // 서버에 요청
                xhttp.send();
            }
    
            /* 테이블 로우 추가
               tableId : 테이블ID
               data : 추가할 row데이터 */
            function drawRow( tableId, data ){
    
                // 결과를 보여줄 테이블
                var table = document.getElementById( tableId );
                // 테이블 초기화
                table.innerHTML = '';
    
                // 로우 인덱스
                var idx = 1;
    
                // 로우 추가
                for( var key in data ) {
    
                    var thisData = data[key];
                    // 테이블 행추가
                    var row = table.insertRow( table.rows.length );
                    // 테이블 열 추가
                    var cell1 = row.insertCell( 0 );
                    var cell2 = row.insertCell( 1 );
                    cell1.innerHTML = idx + '. ' + key;
    
                    // 데이터타입 체크
                    if( typeof(thisData) == 'object' ){
                        cell2.innerHTML = JSON.stringify( thisData );
                    }else{
                        cell2.innerHTML = thisData;
                    }
    
                    idx++;
    
                }
    
            }
    
            // 요쳥결과테이블 초기화
            function resetTable( elementId ){
                var table = document.getElementById('resultTable');
                // 테이블 초기화
                table.innerHTML = '';
    
                //응답데이터 크기 초기화
                var resultSize = document.getElementById('resultLength');
                resultSize.innerHTML = '응답데이터 크기 : ';
    
            }
    
        </script>
    
        <style>
            table {
                width: 100%;
                border: 1px solid #444444;
                border-collapse: collapse;
            }
            th, td {
                border: 1px solid #444444;
                padding: 10px;
            }
        </style>
    
    </head>
    <body>
    
        <button type='button' onclick='loadAPI()'>XHR요청하기</button>
        <button type='button' onclick='resetTable()'>초기화</button>
        <div>⬇요청결과⬇</div>
        <div id="resultLength"></div>
        <table id='resultTable'></table>
    
    </body>          
    ⬇요청결과⬇
    반응형

    'Dev_Tip > JavaScript_Tip' 카테고리의 다른 글

    [JS] 현재 페이지 프린트하기  (0) 2021.02.25

    댓글

Designed by Tistory.