2주차 웹개발종합반 개발일지

이대희·2022년 5월 12일
0

웹개발

목록 보기
2/3
post-thumbnail

[수업 목표]

  1. Javascript 문법에 익숙해진다.
  2. jQuery로 간단한 HTML을 조작할 수 있다.
  3. Ajax로 서버 API(약속)에 데이터를 주고, 결과를 받아온다.

2주차 배울것
jQuery를 이용해 Javascript로 HTML을 쉽게 제어하고,
Ajax를 이용해 다시 서버에 데이터를 요청하고 받아보겠습니다.

.1) Javascript 잠깐 복습 - 짝/홀수에 따라 다른 얼럿 띄우는 onclick 함수 함께 만들어보기
짝/홀수 판단하는 방법
let even = 4;
console.log(even % 2); // 2로 나눈 나머지가 0입니다.
let odd = 5;
console.log(odd % 2); // 2로 나눈 나머지가 1입니다.
.짝/홀수 onclick 함수(완성)

<script>
    let count = 1;
    function hey() {
        if (count % 2 == 0) {
            alert('짝짝짝👏');
        } else {
            alert('홀홀홀🎅');
        }
					count += 1;
    }
</script>

jQuery 란?
HTML의 요소들을 조작하는, 편리한 Javascript를 미리 작성해둔 것. 라이브러리!
Javascript로도 모든 기능(예 - 버튼 글씨 바꾸기 등)을 구현할 수는 있지만,
1) 코드가 복잡하고, 2) 브라우저 간 호환성 문제도 고려해야해서,
jQuery라는 라이브러리가 등장하게 되었답니다.

document.getElementById("element").style.display = "none"; (자바스크립트)
를 $('#element').hide(); (jquery)로 보다 직관적으로 쓸수있다.

자주쓰는 jQuery들 다뤄보기

input 박스의 값을 가져오기
// 크롬 개발자도구 콘솔창에서 쳐보기
// id 값이 post-url인 곳을 가리키고, val()로 값을 가져온다.
$('#post-url').val();

div 보이기/숨기기
// 크롬 개발자도구 콘솔창에 쳐보기
// id 값이 post-box인 곳을 가리키고, hide()로 안보이게 한다.(=css의 display 값을 none으로 바꾼다)
$('#post-box').hide();

// show()로 보이게 한다.(=css의 display 값을 block으로 바꾼다)
$('#post-box').show();

css의 값 가져와보기 (우리는 display 속성 값을 가져와볼게요!)
('#post-box').hide();('#post-box').css('display');

('#post-box').show();('#post-box').css('display');

태그 내 텍스트 입력하기
input box의 경우
$('#post-url').val('여기에 텍스트를 입력하면!');

다른 것들 - 예) 버튼의 텍스트 바꾸기
// 가리키고 싶은 버튼에 id 값을 준다음
포스팅 박스 열기
+$('#btn-posting-box').text('포스팅 박스 닫기');

태그 내 html 입력하기

~
내에, 동적으로 html을 넣고 싶을 땐? (예를 들어, 포스팅되면 → 카드 추가)

// 사이에 html을 넣고 싶은 태그에 id값을 준 다음

여기 기사 제목이 들어가죠

여기에 기사 내용이 들어가겠죠

여기엔 코멘트가 들어갑니다

버튼을 넣어보기 let temp_html = '나는 추가될 버튼이다!'; $('#cards-box').append(temp_html); 버튼 말고, 카드를 넣어보기 // 주의: 홑따옴표(')가 아닌 backtick(`)으로 감싸야 합니다. // 숫자 1번 키 왼쪽의 버튼을 누르면 backtick(`)이 입력됩니다. // backtick을 사용하면 문자 중간에 Javascript 변수를 삽입할 수 있습니다. let img_url = 'https://www.eurail.com/content/dam/images/eurail/Italy%20OCP%20Promo%20Block.adaptive.767.1535627244182.jpg'; let link_url = 'https://naver.com/'; let title = '여기 기사 제목이 들어가죠'; let desc = '기사의 요약 내용이 들어갑니다. 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라만세 무궁화 삼천리 화려강산...'; let comment = '여기에 코멘트가 들어갑니다.';

let temp_html = `


                <div class="card-body">
                    <a href="${link_url}" class="card-title">${title}</a>
                    <p class="card-text">${desc}</p>
                    <p class="card-text comment">${comment}</p>
                </div>
            </div>`;

$('#cards-box').append(temp_html);

연습하기

'포스팅박스 열기' 버튼을 누르면 숨겨진 창이 나타나고 버튼의 내용이 '포스팅박스 닫기'로 바뀝니다. 다시 한 번 버튼을 클릭하면 원래 모습으로 돌아갑니다.

포스팅 박스 열기 버튼에 function을 달기

// onclick 속성(attribute)을 추가합니다.
포스팅박스 열기

클릭 해서 포스팅 박스를 여닫게 하기
포스팅 박스에 id 값을 주기

아티클 URL
간단 코멘트
기사저장

포스팅 박스 제어하기

function openclose() {
// id 값 post-box의 display 값이 block 이면
if ($('#post-box').css('display') == 'block') {
// post-box를 가리고
$('#post-box').hide();
} else {
// 아니면 post-box를 펴라
$('#post-box').show();
}
}

posting-box를 시작부터 감춰두기 (css의 display:none 속성!)
이런 것을, inline-style (인라인 스타일) 이라고 부릅니다.

여기저기 쓰면 복잡하겠지만, 이렇게 쓰면
직관적으로 "아 처음부터 안보이는 태그구나!"를 알 수 있겠죠!

(물론, class주고, css에서 display:none 속성을 주는 것도 방법이구요!)

아티클 URL
간단 코멘트
기사저장

포스팅박스 열기 버튼에 id 값 주기
포스팅박스 열기
버튼 텍스트를 바꿔주기
function openclose() {
// id 값 post-box의 display 값이 block 이면
if ($('#post-box').css('display') == 'block') {
// post-box를 가리고
$('#post-box').hide();
// 가렸으니까 이제 열기로 바꿔두기
$('#btn-posting-box').text('포스팅 박스 열기');
} else {
// 아니면 post-box를 펴라
$('#post-box').show();
// 폈으니까 이제 닫기로 바꿔두기
$('#btn-posting-box').text('포스팅 박스 닫기');
}
}

완성

<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
    integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
    integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
    crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
    integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
    crossorigin="anonymous"></script>

<title>스파르타코딩클럽 | 부트스트랩 연습하기</title>

<link href="https://fonts.googleapis.com/css2?family=Jua&display=swap" rel="stylesheet">

<style>
    * {
        font-family: 'Jua', sans-serif;
    }

    .wrap {
        margin: auto;
        width: 900px;
    }

    .comment {
        font-weight: bold;
        color: blue;
    }

    .posting-box {
        margin: 10px auto 30px auto;
        width: 500px;

        border: 3px solid black;
        border-radius: 5px;

        padding: 25px;
    }
</style>
<script>
    function openclose() {
        let status = $('#post-box').css('display');
        if (status == 'block') {
            $('#post-box').hide()
            $('#posting-box-btn').text('포스팅박스 열기')
        } else {
            $('#post-box').show()
            $('#posting-box-btn').text('포스팅박스 닫기')
        }
    }
</script>

나홀로 링크 메모장!

중요한 링크를 저장해두고, 나중에 볼 수 있는 공간입니다


포스팅박스 열기

아티클 URL
간단 코멘트
기사 저장

여기 기사 제목이 들어가죠

기사의 요약 내용이 들어갑니다. 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라만세 무궁화 삼천리 화려강산...

여기에 코멘트가 들어갑니다.

여기 기사 제목이 들어가죠

기사의 요약 내용이 들어갑니다. 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라만세 무궁화 삼천리 화려강산...

여기에 코멘트가 들어갑니다.

jquery 퀴즈

jQuery 연습하고 가기!
<!-- 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() {
        // 1. input-q1의 입력값을 가져온다. $('# .... ').val() 이렇게!
        // 2. 만약 입력값이 빈칸이면 if(입력값=='')
        // 3. alert('입력하세요!') 띄우기
        // 4. alert(입력값) 띄우기
    }

    function q2() {
        // 1. input-q2 값을 가져온다.
        // 2. 만약 가져온 값에 @가 있으면 (includes 이용하기 - 구글링!)
        // 3. info.spartacoding@gmail.com -> gmail 만 추출해서 ( .split('@') 을 이용하자!)
        // 4. alert(도메인 값);으로 띄우기
        // 5. 만약 이메일이 아니면 '이메일이 아닙니다.' 라는 얼럿 띄우기
    }

    function q3() {
        // 1. input-q3 값을 가져온다. let txt = ... q1, q2에서 했던 걸 참고!
        // 2. 가져온 값을 이용해 names-q3에 붙일 태그를 만든다. (let temp_html = `<li>${txt}</li>`) 요렇게!
        // 3. 만들어둔 temp_html을 names-q3에 붙인다.(jQuery의 $('...').append(temp_html)을 이용하면 굿!)
    }

    function q3_remove() {
        // 1. names-q3의 내부 태그를 모두 비운다.(jQuery의 $('....').empty()를 이용하면 굿!)
    }

</script>

jQuery + Javascript의 조합을 연습하자!

<div class="question-box">
    <h2>1. 빈칸 체크 함수 만들기</h2>
    <h5>1-1. 버튼을 눌렀을 때 입력한 글자로 얼럿 띄우기</h5>
    <h5>[완성본]1-2. 버튼을 눌렀을 때 칸에 아무것도 없으면 "입력하세요!" 얼럿 띄우기</h5>
    <input id="input-q1" type="text" /> <button onclick="q1()">클릭</button>
</div>
<hr />
<div class="question-box">
    <h2>2. 이메일 판별 함수 만들기</h2>
    <h5>2-1. 버튼을 눌렀을 때 입력받은 이메일로 얼럿 띄우기</h5>
    <h5>2-2. 이메일이 아니면(@가 없으면) '이메일이 아닙니다'라는 얼럿 띄우기</h5>
    <h5>[완성본]2-3. 이메일 도메인만 얼럿 띄우기</h5>
    <input id="input-q2" type="text" /> <button onclick="q2()">클릭</button>
</div>
<hr />
<div class="question-box">
    <h2>3. HTML 붙이기/지우기 연습</h2>
    <h5>3-1. 이름을 입력하면 아래 나오게 하기</h5>
    <h5>[완성본]3-2. 다지우기 버튼을 만들기</h5>
    <input id="input-q3" type="text" placeholder="여기에 이름을 입력" />
    <button onclick="q3()">이름 붙이기</button>
    <button onclick="q3_remove()">다지우기</button>
    <ul id="names-q3">
        <li>세종대왕</li>
        <li>임꺽정</li>
    </ul>
</div>

완성

jQuery 연습하고 가기!
<!-- 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() {
        // 1. input-q1의 입력값을 가져온다.
        let value = $('#input-q1').val();
        // 2. 만약 입력값이 빈칸이면 if(입력값=='')
        if (value == '') {
            // 3. alert('입력하세요!') 띄우기
            alert('입력하세요!');
        } else {
            // 4. alert(입력값) 띄우기
            alert(value);
        }
    }

    function q2() {
        // 1. input-q2 값을 가져온다.
        let email = $('#input-q2').val();
        // 2. 만약 가져온 값에 @가 있으면 (includes 이용하기 - 찾아보자!)
        if (email.includes('@')) {
            // 3. info.spartacoding@gmail.com -> gmail 만 추출해서
            // 4. alert(도메인 값);으로 띄우기
            let domainWithDot = email.split('@')[1];
            let onlyDomain = domainWithDot.split('.')[0];
            alert(onlyDomain);
        } else {
            // 5. 만약 이메일이 아니면 '이메일이 아닙니다.' 라는 얼럿 띄우기
            alert('이메일이 아닙니다.');
        }
    }

    function q3() {
        // 1. input-q3 값을 가져온다.
        let newName = $('#input-q3').val();
        if (newName == '') {
            alert('이름을 입력하세요');
            return;
        }
        // 2. 가져온 값을 이용해 names-q3에 붙일 태그를 만든다. (let temp_html = `<li>${가져온 값}</li>`)
        let temp_html = `<li>${newName}</li>`;
        // 3. 만들어둔 temp_html을 names-q3에 붙인다.(jQuery의 $('...').append(temp_html)을 이용하면 굿!)
        $('#names-q3').append(temp_html);
    }

    function q3_remove() {
        // 1. names-q3의 내부 태그를 모두 비운다.(jQuery의 $('....').empty()를 이용하면 굿!)
        $('#names-q3').empty();
    }

</script>

jQuery + Javascript의 조합을 연습하자!

<div class="question-box">
    <h2>1. 빈칸 체크 함수 만들기</h2>
    <h5>1-1. 버튼을 눌렀을 때 입력한 글자로 얼럿 띄우기</h5>
    <h5>[완성본]1-2. 버튼을 눌렀을 때 칸에 아무것도 없으면 "입력하세요!" 얼럿 띄우기</h5>
    <input id="input-q1" type="text" /> <button onclick="q1()">클릭</button>
</div>
<hr />
<div class="question-box">
    <h2>2. 이메일 판별 함수 만들기</h2>
    <h5>2-1. 버튼을 눌렀을 때 입력받은 이메일로 얼럿 띄우기</h5>
    <h5>2-2. 이메일이 아니면(@가 없으면) '이메일이 아닙니다'라는 얼럿 띄우기</h5>
    <h5>[완성본]2-3. 이메일 도메인만 얼럿 띄우기</h5>
    <input id="input-q2" type="text" /> <button onclick="q2()">클릭</button>
</div>
<hr />
<div class="question-box">
    <h2>3. HTML 붙이기/지우기 연습</h2>
    <h5>3-1. 이름을 입력하면 아래 나오게 하기</h5>
    <h5>[완성본]3-2. 다지우기 버튼을 만들기</h5>
    <input id="input-q3" type="text" placeholder="여기에 이름을 입력" />
    <button onclick="q3()">이름 붙이기</button>
    <button onclick="q3_remove()">다지우기</button>
    <ul id="names-q3">
        <li>세종대왕</li>
        <li>임꺽정</li>
    </ul>
</div>

서버-클라이언트 통신 이해하기
API는 은행 창구와 같은 것!

같은 예금 창구에서도 개인 고객이냐 기업 고객이냐에 따라
가져와야 하는 것 / 처리해주는 것이 다른 것처럼,

클라이언트가 요청 할 때에도, "타입"이라는 것이 존재합니다.

  • GET → 통상적으로! 데이터 조회(Read)를 요청할 때
    예) 영화 목록 조회

  • POST → 통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때
    예) 회원가입, 회원탈퇴, 비밀번호 수정

이 중에서 오늘은 GET 방식에 대해 배워보겠습니다. (POST는 4주차에 배웁니다)

영화소개사이트

https://movie.naver.com/movie/bi/mi/basic.nhn?code=161967

위 주소는 크게 두 부분으로 쪼개집니다. 바로 "?"가 쪼개지는 지점인데요.
"?" 기준으로 앞부분이 <서버 주소>, 뒷부분이 [영화 번호] 입니다.

GET 방식으로 데이터를 전달하는 방법

? : 여기서부터 전달할 데이터가 작성된다는 의미입니다.
& : 전달할 데이터가 더 있다는 뜻입니다.

예시) google.com/search?q=아이폰&sourceid=chrome&ie=UTF-8

     위 주소는 google.com의 search 창구에 다음 정보를 전달합니다!
     q=아이폰                        (검색어)
     sourceid=chrome        (브라우저 정보)
     ie=UTF-8                      (인코딩 정보)
     

여기서 잠깐, 그럼 code라는 이름으로 영화번호를 주자!는 것은
누가 정하는 것일까요?

→ 네, 바로 프론트엔드 개발자와 백엔드 개발자가 미리 정해둔 약속입니다.

프론트엔드: "code라는 이름으로 영화번호를 주면 될까요?"
백엔드: "네 그렇게 하시죠. 그럼 code로 영화번호가 들어온다고 생각하고 코딩하고 있을게요"

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

해설
$.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) // 서버에서 준 결과를 이용해서 나머지 코드를 작성
}
})

리마인드
GET 요청은, url뒤에 아래와 같이 붙여서 데이터를 가져갑니다.
http://naver.com?param=value¶m2=value2

POST 요청은, data : {} 에 넣어서 데이터를 가져갑니다.
data: { param: 'value', param2: 'value2' },

테스트
success: function(response){ // 서버에서 준 결과를 response라는 변수에 담음
console.log(response)
}

모든 구의 미세먼지 값을 찍어보기
$.ajax({
type: "GET",
url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99",
data: {},
success: function (response) {
let mise_list = response["RealtimeCityAir"]["row"];
for (let i = 0; i < mise_list.length; i++) {
let mise = mise_list[i];
let gu_name = mise["MSRSTE_NM"];
let gu_mise = mise["IDEX_MVL"];
console.log(gu_name, gu_mise);
}
}
});

미세먼지 수치가 70이상인 곳은 빨갛게 보여줄까요?

jQuery 연습하고 가기!
<!-- 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;
    }
    .bad {
        color: red;
        font-weight: bold;
    }
</style>

<script>
    function q1() {
        // 여기에 코드를 입력하세요
        $('#names-q1').empty();
        $.ajax({
            type: "GET",
            url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99",
            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'];

                    let temp_html = ''

                    if (gu_mise > 70) {
                        temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>`
                    } else {
                        temp_html = `<li>${gu_name} : ${gu_mise}</li>`
                    }
                    
                    $('#names-q1').append(temp_html);
                }
            }
        })
    }
</script>

jQuery+Ajax의 조합을 연습하자!

<hr />

<div class="question-box">
    <h2>1. 서울시 OpenAPI(실시간 미세먼지 상태)를 이용하기</h2>
    <p>모든 구의 미세먼지를 표기해주세요</p>
    <p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
    <button onclick="q1()">업데이트</button>
    <ul id="names-q1">
    </ul>
</div>
서울시 OpenAPI(실시간 따릉이 현황)을 이용하기 JQuery 연습하고 가기!
<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>

jQuery + Ajax의 조합을 연습하자!

<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>
완성 jQuery 연습하고 가기!
<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://spartacodingclub.shop/sparta_api/seoulbike",
            data: {},
            success: function (response) {
                let rows = response["getStationListHist"]["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>

jQuery +Ajax의 조합을 연습하자!

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

따릉이 대수가 5대 미만인 곳은 빨갛게 보여주면 어떨까요?

jQuery 연습하고 가기!
<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;
    }

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

<script>
    function q1() {
        $('#names-q1').empty();
        $.ajax({
            type: "GET",
            url: "http://spartacodingclub.shop/sparta_api/seoulbike",
            data: {},
            success: function (response) {
                let rows = response["getStationList"]["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 = '';
                    if (bike_cnt < 5) {
                        temp_html = `<tr class="urgent">
                            <td>${rack_name}</td>
                            <td>${rack_cnt}</td>
                            <td>${bike_cnt}</td>
                          </tr>`
                    } else {
                        temp_html = `<tr>
                            <td>${rack_name}</td>
                            <td>${rack_cnt}</td>
                            <td>${bike_cnt}</td>
                          </tr>`
                    }
                    $('#names-q1').append(temp_html);
                }
            }
        })
    }
</script>

jQuery+Ajax의 조합을 연습하자!

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

랜덤 고양이 사진 API를 이용하기

JQuery 연습하고 가기!
<script>
  function q1() {
    // 여기에 코드를 입력하세요
  }
</script>

JQuery+Ajax의 조합을 연습하자!

<hr/>

<div class="question-box">
  <h2>3. 랜덤 고양이 사진 API를 이용하기</h2>
  <p>예쁜 고양이 사진을 보여주세요</p>
  <p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
  <button onclick="q1()">고양이를 보자</button>
  <div>
    <img id="img-cat" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"/>
  </div>
</div>

완성

JQuery 연습하고 가기!
<script>
  function q1() {
    $.ajax({
      type: "GET",
      url: "https://api.thecatapi.com/v1/images/search",
      data: {},
      success: function(response){
          let imgurl = response[0]['url'];
          $("#img-cat").attr("src", imgurl);
        }
      })
  }
</script>

JQuery+Ajax의 조합을 연습하자!

<hr/>

<div class="question-box">
  <h2>3. 랜덤 고양이 사진 API를 이용하기</h2>
  <p>예쁜 고양이 사진을 보여주세요</p>
  <p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
  <button onclick="q1()">고양이를 보자</button>
  <div>
    <img id="img-cat" width="300" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"/>
  </div>
</div>
2주차 끝 & 숙제 1주차에 완성한 쇼핑몰에, 환율 정보를 넣어주세요! 로딩이 완료되면, 환율 API을 이용해서 환율을 표시해주세요. 힌트 $(document).ready(function(){ alert('다 로딩됐다!') });

답안코드

<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
      integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
        integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
        crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
        integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
        crossorigin="anonymous"></script>

<title>스파르타코딩클럽 | 부트스트랩 연습하기</title>

<link href="https://fonts.googleapis.com/css2?family=Jua&display=swap" rel="stylesheet">

<style>
    * {
        font-family: 'Jua', sans-serif;
    }

    .item-img {
        width: 500px;
        height: 300px;

        background-image: url("https://t1.daumcdn.net/liveboard/nts/5bcccfbd33da4865817b9c606b6b852e.JPG");
        background-position: center;
        background-size: cover;
    }

    .price {
        font-size: 20px;
    }

    .item-desc {
        width: 500px;
        margin-top: 20px;
        margin-bottom: 20px;
    }

    .item-order {
        width: 500px;
    }

    .btn-order {
        margin: auto;
        width: 100px;

        display: block;
    }

    .wrap {
        width: 500px;
        margin: auto;
    }

    .rate {
        color: blue;
    }
</style>

<script>
    $(document).ready(function () {
        get_rate();
    });

    function get_rate(){
        $.ajax({
            type: "GET",
            url: "http://spartacodingclub.shop/sparta_api/rate",
            data: {},
            success: function (response) {
                let now_rate = response['rate'];
                $('#now-rate').text(now_rate);
            }
        })
    }

    function order() {
        alert('주문이 완료되었습니다!');
    }
</script>

양초를 팝니다 가격:3,000원/개

이 양초는 사실 특별한 힘을 지니고 있어요!

달러-원 환율: 1219.15

주문자이름
수량
-- 수량을 선택하세요 -- 1 2 3
주소
전화번호
주문하기

=한줄에 들어간 txt를 나누는 spn과 response에서 필요한값을 가져오면 생각보다 어렵지않았지만 값은 가져왔는데 이걸 화면에 어떻게 띄우지하고 멘붕왔었다.결국 답안을 보고 참고했다.

달러-원 환율: 1219.15

p를 rate이란 이름을 붙이고 span으로 나눈뒤 id를 붙여준다.

function get_rate(){
.ajax({ type: "GET", url: "http://spartacodingclub.shop/sparta_api/rate", data: {}, success: function (response) { let now_rate = response['rate']; $('#now-rate').text(now_rate); url주소를 가져와주고 let으로 now_rate에 'rate'값을담은뒤('#now-rate').text(now_rate);을 아래에 붙여주면 된다.

profile
자신감을 얻고 싶다.

0개의 댓글