항해99

[2주차] [#05] Ajax 함께 연습하기(02) / 서울시 따릉이 API

Heoky 2022. 10. 4. 21:29

Ajax 기본 골격

$.ajax({
  type: "GET",
  url: "여기에URL을입력",
  data: {},
  success: function(response){
    console.log(response)
  }
})

따릉이 open API

http://spartacodingclub.shop/sparta_api/seoulbike

 


HTML

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>JQuery 연습하고 가기!</title>
    <!-- JQuery를 import 합니다 -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <style type="text/css">
        div.question-box {
            margin: 10px 0 20px 0;
        }

        table {
            border: 1px solid;
            border-collapse: collapse;
        }

        td,
        th {
            padding: 10px;
            border: 1px solid;
        }
    </style>

    <script>
        function q1() {
            // 여기에 코드를 입력하세요
        }
    </script>

</head>

<body>
    <h1>jQuery + Ajax의 조합을 연습하자!</h1>

    <hr />

    <div class="question-box">
        <h2>2. 서울시 OpenAPI(실시간 따릉기 현황)를 이용하기</h2>
        <p>모든 위치의 따릉이 현황을 보여주세요</p>
        <p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
        <button onclick="q1()">업데이트</button>
        <table>
            <thead>
                <tr>
                    <td>거치대 위치</td>
                    <td>거치대 수</td>
                    <td>현재 거치된 따릉이 수</td>
                </tr>
            </thead>
            <tbody id="names-q1">
                <tr>
                    <td>102. 망원역 1번출구 앞</td>
                    <td>22</td>
                    <td>0</td>
                </tr>
                <tr>
                    <td>103. 망원역 2번출구 앞</td>
                    <td>16</td>
                    <td>0</td>
                </tr>
                <tr>
                    <td>104. 합정역 1번출구 앞</td>
                    <td>16</td>
                    <td>0</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>

</html>

문제

1. 업데이트 클릭 시 거치대 위치, 거치대 수, 현재 거치된 따릉이 수를 보여주자.

2. 업데이트 클릭 시 기존의 정보는 지워준다.

3. 거치된 따릉이의 수가 5 미만인 곳은 빨갛게 표시해주자.

 


작성한 답안 코드

CSS

  <style type="text/css">
        * {
            text-align: center;
        }

        div.question-box {
            margin: 10px 0 20px 0;
        }

        table {
            border: 1px solid;
            border-collapse: collapse;
            margin: 20px auto 0 auto;
        }

        td,
        th {
            padding: 10px;
            border: 1px solid;
        }

        .urgent {
            color: red;
            font-weight: 700;
        }
    </style>

Script

function q1() {
            $('#names-q1').empty();
            $.ajax({
                type: "GET",
                url: "http://spartacodingclub.shop/sparta_api/seoulbike",
                data: {},
                success: function (response) {
                    // console.log(response.getStationList.row)
                    let cnt_list = response.getStationList.row;

                    for (let i = 0; i < cnt_list.length; i += 1) {
                        let cnt_impormation = cnt_list[i];
                        let rackTotCnt = cnt_impormation['rackTotCnt']; // 거치대 수
                        let parkingBikeTotCnt = cnt_impormation['parkingBikeTotCnt']; // 현재 거치된 따릉이 수
                        let stationName = cnt_impormation['stationName']; // 거치대 위치
                        // console.log(rackTotCnt, parkingBikeTotCnt, stationName);

                        let temp_html = ``

                        // 거치된 바이크가 5대 미만이 곳은 빨갛게 표시하자
                        if (parkingBikeTotCnt < 5) {
                            temp_html = `<tr class="urgent">
                                            <td>${stationName}</td>
                                            <td>${rackTotCnt}</td>
                                            <td>${parkingBikeTotCnt}</td>
                                         </tr>`
                        } else {
                            temp_html = `<tr>
                                            <td>${stationName}</td>
                                            <td>${rackTotCnt}</td>
                                            <td>${parkingBikeTotCnt}</td>
                                         </tr>`
                        }
                        $("#names-q1").append(temp_html);

                    }
                }
            })
        }