2020.05.20 개발일지

moony_moon·2020년 5월 21일
0

개발여행

목록 보기
3/5

Instead of Bootstrap for css, bulma and tailwind are modern css styles.

AJAX: 서버와 통신하기 위한 툴 (엔진)

Client 'request' data
Server 'respond' to client 'request'

Row: 행 Column: 열 (Table structure)

Get 요청 시 질문을 더 집요하게 할 때 query 통해서 물어본다.

$.ajax({
  type: "GET", // GET 방식으로 요청한다.
  url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99",
  data: {}, // 요청하면서 함께 줄 데이터 (GET 요청시엔 비워두세요)
  success: function(response){ // 서버에서 준 결과를 response라는 변수에 담음
    console.log(response) // 서버에서 준 결과를 이용해서 나머지 코드를 작성
  }
})
  error: function(error){
    console.log(error)

Ajax로 GET (GET/POST 중 하나)로 url(주소)에 data(POST와 쓰임)와 함께 request(요청)을 한다.
success시 callback (다시 부른다)를 한다.

ajax에서 요청을 했을 때 function의 값은 대부분 dictionary 형태로 나온다. 그렇기 때문에, dictionary가 굉장히 중요!

참고: Ajax는 jQuery를 임포트 한 페이지에서만 가능하다. 그러므로 open API 서버를 개발자모드로 켜서 $.ajax로 실행해도 Uncaught type error가 뜸.

서울시 OPEN API로 실시간 따릉이 현황 확인하는 코딩 짜기 (JAVA SCRIPT + JQUERY + AJAX)

  1. 모든 위치의 따릉이를 보여줘라
  2. 업데이트를 누를때마다 새로 씌워져야 한다
<!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() {
            $('#names-q1').empty();
            $.ajax({
                type: "GET",
                url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/bikeList/1/99",
                data: {},
                success: function (response) {
                    let rows = response["rentBikeStatus"]["row"];
                    for (let i = 0; i < rows.length; i++) {
                        let rack_name = rows[i]['stationName'];
                        let rack_cnt = rows[i]['rackTotCnt'];
                        let bike_cnt = rows[i]['parkingBikeTotCnt'];
                        let temp_html = `<tr>
                                            <td>${rack_name}</td>
                                            <td>${rack_cnt}</td>
                                            <td>${bike_cnt}</td>
                                        </tr>`
                        $('#names-q1').append(temp_html);
                    }
                }
            })
        }
    </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">
            </tbody>
        </table>
    </div>
</body>

</html>

나의대답

 <script>
        function q1() {
            $('#names-q1').empty();
            $.ajax({
                type: "GET",
                url:"http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/bikeList/1/99",
                data:{},
                success: function(response){
                    let bike = response["rentBikeStatus"]["row"];
                    for (e in bike){
                        let bike_station = bike[e]['stationName'];
                        let bike_rack= bike[e]['rackTotCnt'];
                        let bike_parking= bike[e]['parkingBikeTotCnt'];
                        let temp_html = `<tr>
                                            <td>${bike_station}</td>
                                            <td>${bike_rack}</td>
                                            <td>${bike_parking}</td>
                                        </tr>`
                        $('#names-q1').append(temp_html);
                    }
                }
           })
        }
    </script>

j query를 통해서 불러온 이후 ajax를 통해 원하는 정보를 'GET' 하는 방식의 원리와 정확히 언제 쓰일지에 대한 감은 완벽히 잡힌 것 같지는 않다.
for 문을 e in ' ' 형태로 쓰는 건 확실히 익숙해 진것 같다.

profile
끝없이 배우는 개발자가 되고 싶습니다.

0개의 댓글