새소식

개발 공부 일지/웹

Ajax 시작하기

  • -
반응형

Ajax는 jQuery를 임포트 한 페이지에서만 동작 가능하다.
즉, http://google.com/ 과 같은 화면에서 개발자 도구를 열면, jQuery가 임포트 되어있지 않기 때문에 아래와 같은 에러가 뜬다.
Uncaught TypeError: $.ajax is not a function → ajax라는 게 없다는 뜻.

$.ajax({
    type: "GET",
    url: "http://spartacodingclub.shop/sparta_api/seoulair",
    data: {},
    success: function (response) {
        console.log(response)
    }
})

GET 방식으로 이 URL에 요청해서 response를 찍어주겠다는 뜻!

콘솔 창에서 확인한 모습

$.ajax({
    type: "GET",
    url: "http://spartacodingclub.shop/sparta_api/seoulair",
    data: {},
    success: function (response) {
        console.log(response['RealtimeCityAir']['row'])
    }
})

console.log에 ['RealtimeCityAir']['row']를 추가해주었다.

콘솔 창에서 보여주는 내용의 변화

$.ajax({
    type: "GET",
    url: "http://spartacodingclub.shop/sparta_api/seoulair",
    data: {},
    success: function (response) {
        let rows = response['RealtimeCityAir']['row']
    }
})

console.log를 let rows로 수정 rows는 위 스샷에 25개의 리스트이다.

$.ajax({
    type: "GET",
    url: "http://spartacodingclub.shop/sparta_api/seoulair",
    data: {},
    success: function (response) {
        let rows = response['RealtimeCityAir']['row']
        for (let i = 0; i < rows.length; i++) {
            let gu_name = rows[i]['MSRSTE_NM']
            let gu_mise = rows[i]['IDEX_MVL']
            console.log(gu_name,gu_mise)
        }
    }
})

for문을 이용해 구 이름과 미세먼지 값을 가져올 수 있도록 코드를 수정했다.

구 이름과 미세먼지 값

콘솔 창에서 확인을 해보면 구 이름과 미세먼지 값이 나열되어 있는 모습을 확인할 수 있다.

배워본 것을 다시 한번 해보자!!

<!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>

위 내용의 코드에서 http://spartacodingclub.shop/sparta_api/seoulair open api를 이용해 코드를 짜 보자.

script에서  function q1에 코드를 입력해보자.

open api 내용에서 RealtimeCityAir에 row 내용을 타고 들어가는 코드 작성.

function q1() {
    $.ajax({
        type: "GET",
        url: "http://spartacodingclub.shop/sparta_api/seoulair",
        data: {},
        success: function (response) {
            console.log(response['RealtimeCityAir']['row'])
        }
    })
}

이렇게 수정을 하고 브라우저에서 업데이트 버튼을 클릭하면 콘솔 창에서 구와 미세먼지 값이 나오는 것을 확인할 수 있다.

콘솔 창에 나오는 데이터 값을 브라우저에 나타나게 하려면 temp_html을 만들어서 해주면 된다.

<ul id="names-q1">
    <li>중구 : 82</li>
    <li>종로구 : 87</li>
    <li>용산구 : 84</li>
    <li>은평구 : 82</li>
</ul>

구, 미세먼지 항목을 "names-q1" 붙여 주는 작업을 한다.

function q1() {
    $.ajax({
        type: "GET",
        url: "http://spartacodingclub.shop/sparta_api/seoulair",
        data: {},
        success: function (response) {
            let rows = response['RealtimeCityAir']['row']
            for (let i = 0; i < rows.length; i++) {
                // let i가 0부터 i가 rows.lenght만큼 돈다.
                let gu_name = rows[i]['MSRSTE_NM'];
                let gu_mise = rows[i]['IDEX_MVL'];
                let temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>`
                $('#names-q1').append(temp_html);
            }
        }
    })
}

이렇게 코드를 추가해주고, 브라우저에서 업데이트 버튼을 클릭해보자.

브라우저에 구와 미세먼지 값이 나온다.

하지만 업데이트 버튼을 클릭하면 내용이 계속 추가적으로 붙기 때문에 내용을 지우고 붙이도록 코드를 수정해주자!

<script>
    function q1() {
        $('#names-q1').empty();
        $.ajax({
            type: "GET",

$('#names-q1').empty(); 코드를 위처럼 입력해주면 ajax 코드를 실행하기 전에 지우고 ajax 코드를 실행한다.

<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>

여기에서 항목들(<li>중구 : 82</li> 등)을 삭제한다.

브라우저에 미세먼지 수치가 40보다 높은 곳들을 빨간색으로 칠하기~

(open api에서 미세먼지 수치를 확인하고 설정해야 색이 변하는 것을 확인할 수 있다.)

    .bad {
        color: red;
    }
</style>

스타일에 bad 이름표와 컬러 색상값을 입력해주고 브라우저에서 확인하기!

브라우저 확인한 것

그런데 전부 빨간색으로 표시가 된다.

success: function (response) {
    let rows = response['RealtimeCityAir']['row']
    for (let i = 0; i < rows.length; i++) {
        // let i가 0부터 i가 rows.lenght만큼 돈다.
        let gu_name = rows[i]['MSRSTE_NM'];
        let gu_mise = rows[i]['IDEX_MVL'];
        let temp_html = ``
        if (gu_mise > 40) {
            // gu_name의 gu_mise 값이 40 보다 크면
            temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>`
            // temp_html이 bad가 되고
        } else {
            temp_html = `<li>${gu_name} : ${gu_mise}</li>`
            // 그게 아니면 temp_html에 bad가 없으면 된다.
        }
        $('#names-q1').append(temp_html);
    }

이렇게 코드를 수정하고 브라우저에서 확인을 해보자!

빨간색으로 변한 모습

여기까지 계속 반복하면서 배워보자... ㅠ,.ㅠ

반응형

'개발 공부 일지 > ' 카테고리의 다른 글

2주차 숙제하기  (0) 2022.09.06
Ajax 연습하기  (0) 2022.09.06
서버-클라이언트 통신 이해하기  (0) 2022.09.04
JQuery + Javascript 연습하기  (0) 2022.09.04
JQuery 시작하기  (0) 2022.09.03
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.