항해99

[2주차] [#04] Ajax 함께 연습하기(01) / 미세먼지 API

Heoky 2022. 10. 4. 21:28

Ajax 기본 골격

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

미세먼지 open API

http://spartacodingclub.shop/sparta_api/seoulair

 


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;
        }
    </style>

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

</head>

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

    <hr />

    <div class="question-box">
        <h2>1. 서울시 OpenAPI(실시간 미세먼지 상태)를 이용하기</h2>
        <p>모든 구의 미세먼지를 표기해주세요</p>
        <p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
        <button onclick="q1()">업데이트</button>
        <ul id="names-q1">
            <li>중구 : 82</li>
            <li>종로구 : 87</li>
            <li>용산구 : 84</li>
            <li>은평구 : 82</li>
        </ul>
    </div>
</body>

</html>

문제

1. 업데이트 클릭 시 모든 구의 이름과 미세먼지 수치를 보여주자.

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

3. 미세먼지 수치가 40 이상인 곳은 빨갛게 보여준다.

 


작성한 답안 코드

CSS

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

Script

<script>
            function q1() {
                $.ajax({
                    type: "GET",
                    url: "http://spartacodingclub.shop/sparta_api/seoulair",
                    data: {},
                    success: function (response) {
                        $('#names-q1').empty()
                        let mise_list = response.RealtimeCityAir.row;

                        for (let i = 0; i < mise_list.length; i += 1) {
                            let mise = mise_list[i];
                            let gu_name = mise.MSRSTE_NM;
                            let gu_mise = mise.IDEX_MVL;
                            // console.log(gu_name, gu_mise)
                            let temp_html = ``;
                            // 미세먼지 수치가 40 이상인 곳은 빨갛게 보여준다.
                            if (gu_mise > 40) {
                                temp_html = `<li class="bad_mise">${gu_name} : ${gu_mise}</li>`;
                                // $('#names-q1').append(temp_html);
                            } else {
                                temp_html = `<li>${gu_name} : ${gu_mise}</li>`;
                                // $('#names-q1').append(temp_html);
                            }
                            $('#names-q1').append(temp_html); // 공통적으로 들어가는 로직은 마지막에 한줄로 합친다.
                        }

                    }
                })
            }
        </script>