์น ๊ฐ๋ฐ 3์ฃผ ์ฐจ์ ๋ฐฐ์ด ๋ด์ฉ
Jquery + fetch
2์ฃผ ์ฐจ์ JQuery๋ฅผ ๋ง๋ณด๊ธฐ ํ์๋๋ฐ 3์ฃผ ์ฐจ์๋ ๋ฐฐ์ด JQuery๋ฅผ ํ๋ก์ ํธ์ ์ ์ฉํด ๋ดค๋ค!
fetch๋ผ๋ ์๋ก์ด ๊ฐ๋
๋ ๋ฑ์ฅํ์๊ณ , ๋ง์ง๋ง ์์ ๋ก ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐํ์ผ๋ก ํ์ด์ง ์์ ์ฌ์ง์ ๋ณด๋ฉฐ ์ง์ ํ์ด์ง๋ฅผ ์์ฑํ๋ ๊ฒ๋ ๊ฒฝํํ๋ค๐
์ถ์ต์จ๋ฒ - JQuery ์ ์ฉํ๊ธฐ!
์ ์ ๋ง๋ค์๋ ์ถ์ต์จ๋ฒ์ PostBox๋ฅผ ๋ฒํผ์ ํตํด ์ด๊ณ ๋ซ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค!!
function openClose() {
$('#postingbox').toggle(); //display ๊ฐ์ด none์ผ๋ก ๋ฐ๋๋ฉด์ ์๋ณด์ด๊ฒ ๋๋ ์๋ฆฌ์ด๋ค.
}
<div class="mytitle">
<h1>๋๋ง์ ์ถ์ต์จ๋ฒ</h1>
<p>ํ์ฌ ์์ธ์ ๋ฏธ์ธ๋จผ์ง : <span id="msg">๋์จ</span></p>
<button onclick="openClose()">์ถ์ต ์ ์ฅํ๊ธฐ</button>
</div>
<div class="mypostingbox" id="postingbox">
<div class="form-floating mb-3">
<input type="email" class="form-control" id="image" placeholder="์จ๋ฒ ์ด๋ฏธ์ง">
<label for="floatingInput">์จ๋ฒ ์ด๋ฏธ์ง</label>
</div>
<div class="form-floating mb-3">
<input type="email" class="form-control" id="title" placeholder="์จ๋ฒ ์ ๋ชฉ">
<label for="floatingInput">์จ๋ฒ ์ ๋ชฉ</label>
</div>
<div class="form-floating mb-3">
<input type="email" class="form-control" id="content" placeholder="์จ๋ฒ ๋ด์ฉ">
<label for="floatingInput">์จ๋ฒ ๋ด์ฉ</label>
</div>
<div class="form-floating mb-3">
<input type="email" class="form-control" id="date" placeholder="์จ๋ฒ ๋ ์ง">
<label for="floatingInput">์จ๋ฒ ๋ ์ง</label>
</div>
<div class="mybtn">
<button type="button" class="btn btn-dark" onclick="makeCard()">๊ธฐ๋กํ๊ธฐ</button>
<button type="button" class="btn btn-outline-dark">๋ซ๊ธฐ</button>
</div>
</div>
๋จผ์ HTML์ head ํ๊ทธ ์์ script ํ๊ทธ๋ฅผ ์์ฑํ๊ณ function ํจ์ openClose๋ฅผ ์์ฑํ๋ค.
์ถ์ต ์ ์ฅํ๊ธฐ ๋ฒํผ ํ๊ทธ์ onclick="openClose()" ๋ฅผ ์ถ๊ฐํ๊ณ id="postingbox" ๋ฅผ ๊ฐ์ ธ์์ toggle ๋ฉ์๋๋ฅผ ํตํด PostBox๋ฅผ ์ด๊ณ ๋ซ๊ณ ํ ์ ์์๋ค!!
์ฌ๋ผ์ง๊ณ ๋ค์ ๋ํ๋๋ ๊ฑธ ๋์ผ๋ก ์ง์ ๋ณด๋๊น ๋ ์ ๊ธฐํ๋ ๊ฒ ๊ฐ๋ค ๐ฎ
์ผ์ชฝ์ด ์ถ์ต ์ ์ฅํ๊ธฐ ๋ฒํผ์ ์ด์ฉํด์ PostBox๋ฅผ ๋ซ๊ธฐ ์ , ์ค๋ฅธ์ชฝ์ด PostBox๋ฅผ ๋ซ์ ํ ๋ชจ์ต์ด๋ค ๐
๋ค์์ผ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๊ณ ์นด๋๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค!!
function makeCard() {
let image = $('#image').val(); //์์ ์๋ image value ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
let title = $('#title').val(); //์์ ์๋ title value ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
let content = $('#content').val(); //์์ ์๋ content value ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
let date = $('#date').val(); //์์ ์๋ date value ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
let temp_html = `
<div class="col">
<div class="card h-100">
<img src="${image}"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">${title}</h5>
<p class="card-text">${content}</p>
</div>
<div class="card-footer">
<small class="text-body-secondary">${date}</small>
</div>
</div>
</div>`;
$('#card').append(temp_html); //card ํ๋ ์ถ๊ฐํ๊ธฐ!
}
<div class="mybtn">
<button type="button" class="btn btn-dark" onclick="makeCard()">๊ธฐ๋กํ๊ธฐ</button>
<button type="button" class="btn btn-outline-dark">๋ซ๊ธฐ</button>
</div>
<div id="card" class="row row-cols-1 row-cols-md-4 g-4">
<div class="col">
<div class="card h-100">
<img src="https://images.unsplash.com/photo-1446768500601-ac47e5ec3719?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1446&q=80"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">์จ๋ฒ ์ ๋ชฉ</h5>
<p class="card-text">์จ๋ฒ ๋ด์ฉ</p>
</div>
<div class="card-footer">
<small class="text-body-secondary">์จ๋ฒ ๋ ์ง</small>
</div>
</div>
</div>
</div>
script ํ๊ทธ ์์ function ํจ์ makeCard๋ฅผ ์์ฑํ๋ค.
๊ธฐ๋กํ๊ธฐ ๋ฒํผ์์ onclick="makeCard()" ๋ฅผ ์ถ๊ฐํ๊ณ id="card" ๋ฅผ ๊ฐ์ ธ์์ append ๋ฉ์๋๋ฅผ ํตํด ์๋ก์ด ์นด๋๋ฅผ ์ํ๋ ์์น์ ์ถ๊ฐํ ์ ์์๋ค!!
๋ด๊ฐ ์ํ๋ ๋ด์ฉ์ ์
๋ ฅํ๊ณ ๋ฒํผ์ ๋๋ ์ ๋ ์
๋ ฅํ๋ ๋ด์ฉ๋ค์ด ์นด๋๋ก ๋ง๋ค์ด์ง๋ ๊ณผ์ ์ ๋ณด๋๊น ๊ฐ์๋ฅผ ๋ ํฅ๋ฏธ๋กญ๊ฒ ๋ค์ ์ ์์๋ค ๐
์ผ์ชฝ์ด ๋ด์ฉ๋ง ์
๋ ฅํ์ ๋, ์ค๋ฅธ์ชฝ์ด ๊ธฐ๋กํ๊ธฐ ๋ฒํผ์ ๋๋ฅธ ํ ์นด๋๊ฐ ์์ฑ๋ ๋ชจ์ต์ด๋ค ๐
ํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์๋๋ผ์ ์๋ก๊ณ ์นจ์ ํ๋ฉด ๊ทธ ์ ์ ์ถ๊ฐํ๋ ๋ด์ฉ๋ค์ด ๋ชจ๋ ์ฌ๋ผ์ก๋ค.......
์คํ๋ฅดํํ๋ฆญ์ค - JQuery ์ ์ฉํ๊ธฐ!
๋ค์์ผ๋ก ์คํ๋ฅดํํ๋ฆญ์ค์ ํ์ด์ง์์ ์ถ์ต์จ๋ฒ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ ๋ค์ ํ๋ฒ ํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค!
function openClose() {
$('#postingbox').toggle();
}
<div class="main">
<div class="p-5 mb-4 bg-body-tertiary rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">ํน๋ค</h1>
<p class="col-md-8 fs-4">๋ณ๋ ์์ ๋๋ฌ์ธ๊ณ ํํํ ์๋ฌธ์ด ๋ ๋๋ค. ์ด๋ ์ ๋ค๋ฎ์ธ ์กฐ์ , ๊ธฐ์ดํ ์ญ๋ณ์ ์ ์ํ๋ ์ฐํ. ์ ์ฒด ๋ชจ๋ฅผ ์
์ ๋ง์ ๋ฐฑ์ฑ์ ๊ตฌ์ํ ํฌ๋ง์ ์ค์ง
์ธ์๋ฟ์ด๋ค.</p>
<button onclick="openClose()" type="button" class="btn btn-outline-light">์ํ ๊ธฐ๋กํ๊ธฐ</button>
<button type="button" class="btn btn-outline-light">์์ธ์ ๋ณด</button>
</div>
</div>
</div>
<div class="mypostingbox" id="postingbox">
<div class="form-floating mb-3">
<input type="email" class="form-control" id="image" placeholder="์ํ ์ด๋ฏธ์ง ์ฃผ์">
<label for="floatingInput">์ํ ์ด๋ฏธ์ง ์ฃผ์</label>
</div>
<div class="form-floating mb-3">
<input type="email" class="form-control" id="title" placeholder="์ํ ์ ๋ชฉ">
<label for="floatingInput">์ํ ์ ๋ชฉ</label>
</div>
<div class="input-group mb-3">
<label class="input-group-text" for="inputGroupSelect01">๋ณ์ </label>
<select class="form-select" id="star">
<option selected>๋ณ์ ์ ํ</option>
<option value="โญ">โญ</option>
<option value="โญโญ">โญโญ</option>
<option value="โญโญโญ">โญโญโญ</option>
<option value="โญโญโญโญ">โญโญโญโญ</option>
<option value="โญโญโญโญโญ">โญโญโญโญโญ</option>
</select>
</div>
<div class="form-floating mb-3">
<input type="email" class="form-control" id="comment" placeholder="์ถ์ฒ ์ด์ ">
<label for="floatingInput">์ถ์ฒ ์ด์ </label>
</div>
<button type="button" class="btn btn-danger" onclick="makeCard()">๊ธฐ๋กํ๊ธฐ</button>
</div>
๋จผ์ HTML์ head ํ๊ทธ ์์ script ํ๊ทธ๋ฅผ ์์ฑํ๊ณ function ํจ์ openClose๋ฅผ ์์ฑํ๋ค.
์ํ ๊ธฐ๋กํ๊ธฐ ๋ฒํผ ํ๊ทธ์ onclick="openClose()" ๋ฅผ ์ถ๊ฐํ๊ณ id="postingbox" ๋ฅผ ๊ฐ์ ธ์์ toggle ๋ฉ์๋๋ฅผ ํตํด PostBox๋ฅผ ์ด๊ณ ๋ซ๊ณ ํ ์ ์์๋ค!!
๋ค์ ํ ๋ฒ ๋ณต์ตํ๋ ๊ฑฐ์์ง๋ง ์ฌ์ ํ ์ ๊ธฐํ๋ค ๐ฎ
์ผ์ชฝ์ด ์ํ ๊ธฐ๋กํ๊ธฐ ๋ฒํผ์ ์ด์ฉํด์ PostBox๋ฅผ ๋ซ๊ธฐ ์ , ์ค๋ฅธ์ชฝ์ด PostBox๋ฅผ ๋ซ์ ํ ๋ชจ์ต์ด๋ค ๐
๋ค์์ผ๋ก ๋์ผํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ณ ์นด๋๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค!!
function makeCard() {
let image = $('#image').val();
let title = $('#title').val();
let comment = $('#comment').val();
let star = $('#star').val(); //select๋ก ์ด๋ฃจ์ด์ง ๋ถ๋ถ์์๋ value์ ์๋ ๊ฐ์ ์ถ๋ ฅํ๋ค. ๋ฐ๋ผ์ ์ถ๋ ฅํ๊ณ ์ถ์ ๊ฐ์ผ๋ก value ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋๋ค!
//console.log(image, title, comment); //console ์ฐฝ์ ๊ฐ ๋์ฐ๊ธฐ!
//console.log(star); //console ์ฐฝ์ ๊ฐ ๋์ฐ๊ธฐ!
let temp_html = `
<div class="col">
<div class="card h-100">
<img src="${image}"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">${title}</h5>
<p class="card-text">${star}</p>
<p class="card-text">${comment}</p>
</div>
</div>
</div>`;
$('#card').append(temp_html); //์นด๋ ์ถ๊ฐํ๊ธฐ!
}
<div class="mypostingbox" id="postingbox">
<button type="button" class="btn btn-danger" onclick="makeCard()">๊ธฐ๋กํ๊ธฐ</button>
</div>
<div class="mycards">
<div id="card" class="row row-cols-1 row-cols-md-4 g-4">
<div class="col">
<div class="card h-100">
<img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">์ํ ์ ๋ชฉ</h5>
<p class="card-text">โญโญโญ</p>
<p class="card-text">์ํ ์ฝ๋ฉํธ</p>
</div>
</div>
</div>
</div>
</div>
script ํ๊ทธ ์์ function ํจ์ makeCard๋ฅผ ์์ฑํ๋ค.
๊ธฐ๋กํ๊ธฐ ๋ฒํผ์์ onclick="makeCard()" ๋ฅผ ์ถ๊ฐํ๊ณ id="card" ๋ฅผ ๊ฐ์ ธ์์ append ๋ฉ์๋๋ฅผ ํตํด ์๋ก์ด ์นด๋๋ฅผ ์ํ๋ ์์น์ ์ถ๊ฐํ๋ค!!
๋ค์ ๋ฐ๋ณตํด์ ํด๋ณด๋ ๊ฑฐ์์ง๋ง ์ ์ ํ ๋ฒ ํ๋ ๊ฑธ ์๊ฐํ๋ฉด์ ์ง์ ํด๋ณด๋๊น ๋ ํฅ๋ฏธ๋กญ๊ฒ ๋ค๊ฐ์๋ค ๐
์ผ์ชฝ์ด ๋ด์ฉ๋ง ์ ๋ ฅํ์ ๋, ์ค๋ฅธ์ชฝ์ด ๊ธฐ๋กํ๊ธฐ ๋ฒํผ์ ๋๋ฅธ ํ ์นด๋๊ฐ ์์ฑ๋ ๋ชจ์ต์ด๋ค ๐
ํด๋ผ์ด์ธํธ & ์๋ฒ ๊ฐ๋ ์ดํดํ๊ธฐ
fetch๋ผ๋ ์๋ก์ด ๊ฐ๋ ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ฐ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๊ฐ๋ ์ ์ดํดํ๋ ์๊ฐ์ ๊ฐ์ก๋ค.
์๋ฒ → ํด๋ผ์ด์ธํธ : ๋ฐ์ดํฐ๋ฅผ ์ค ๋๋ JSON ํ์์ผ๋ก ์ ๋ฌ๋์๋ค.
JSON ํ์์ Key-Value๋ก ์ด๋ฃจ์ด์ ธ ์์ด์ ๋์
๋๋ฆฌ ๊ตฌ์กฐ์ ์์ฃผ ์ ์ฌํ๋ค!
ํฌ๋กฌ ์ต์คํ
์
JSONview๋ฅผ ์ค์นํ๊ณ ์์ธ์ ๋ฏธ์ธ๋จผ์ง OpenAPI ๋ฅผ ์ดํด๋ณด์๋ค.
์ค์นํ๊ณ ๋๋ ๋์ ๋ณด๊ธฐ ์ฝ๊ฒ ๋ฐ์ดํฐ๋ค์ด ๋ฐ๋์ด ์์๋ค.
ํด๋ผ์ด์ธํธ → ์๋ฒ : GET ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋์๋ค.
โญAPI๋ ์ํ ์ฐฝ๊ตฌ์ ๊ฐ์ ๊ฒ!โญ
๊ฐ์ ์๊ธ ์ฐฝ๊ตฌ์์๋ ๊ฐ์ธ ๊ณ ๊ฐ์ด๋ ๊ธฐ์ ๊ณ ๊ฐ์ด๋์ ๋ฐ๋ผ
๊ฐ์ ธ์์ผ ํ๋ ๊ฒ / ์ฒ๋ฆฌํด์ฃผ๋ ๊ฒ์ด ๋ค๋ฅธ ๊ฒ์ฒ๋ผ,
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ ํ ๋์๋, "ํ์ "์ด๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค.
* GET → ํต์์ ์ผ๋ก! ๋ฐ์ดํฐ ์กฐํ(Read)๋ฅผ ์์ฒญํ ๋
์) ์ํ ๋ชฉ๋ก ์กฐํ
* POST → ํต์์ ์ผ๋ก! ๋ฐ์ดํฐ ์์ฑ(Create), ๋ณ๊ฒฝ(Update), ์ญ์ (Delete) ์์ฒญํ ๋
์) ํ์ ๊ฐ์ , ํ์ ํํด, ๋น๋ฐ๋ฒํธ ์์
https://movie.daum.net/moviedb/main?movieId=68593
์ ์ฃผ์๋ ํฌ๊ฒ ๋ ๋ถ๋ถ์ผ๋ก ์ชผ๊ฐ์ง๋ค.
๋ฐ๋ก "?"๊ฐ ์ชผ๊ฐ์ง๋ ์ง์ ์ธ๋ฐ "?" ๊ธฐ์ค์ผ๋ก ์ ๋ถ๋ถ์ด <์๋ฒ ์ฃผ์> ๋ท๋ถ๋ถ์ด [์ํ ๋ฒํธ]์ด๋ค.
- ์๋ฒ ์ฃผ์: https://movie.daum.net/moviedb/main?movieId=68593
- ์ํ ์ ๋ณด: movieId=68593
โ๏ธ์ฐธ๊ณ - GET ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
? : ์ฌ๊ธฐ์๋ถํฐ ์ ๋ฌํ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๋ค๋ ์๋ฏธ์ ๋๋ค.
& : ์ ๋ฌํ ๋ฐ์ดํฐ๊ฐ ๋ ์๋ค๋ ๋ป์ ๋๋ค.
์์) google.com/search?q=์์ดํฐ&sourceid=chrome&ie=UTF-8
Fetch
fetch ์ฐ์ต์ ์ํด ์ฐ์ HTML ํ์ผ์ ํ๋ ์์ฑํ๋ค.
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Fetch ์์ํ๊ธฐ</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
function hey() {
alert('์ฐ๊ฒฐ์๋ฃ');
}
</script>
</head>
<body>
<button onclick="hey()">fetch ์ฐ์ต!</button>
</body>
</html>
๋ฏธ์ธ๋จผ์ง OpenApi URL์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
Fetch์ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
fetch("์ฌ๊ธฐ์ URL์ ์
๋ ฅ")
// ์ด URL๋ก ์น ํต์ ์ ์์ฒญํ๋ค. ๊ดํธ ์์ ๋ค๋ฅธ ๊ฒ์ด ์๋ค๋ฉด GET!
.then(res => res.json())
// ํต์ ์์ฒญ์ ๋ฐ์ ๋ฐ์ดํฐ๋ res๋ผ๋ ์ด๋ฆ์ผ๋ก JSONํ ํ๋ค.
.then(data => {
console.log(data)
}) // JSON ํํ๋ก ๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ data๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ถ์ฌ ์ฌ์ฉํ๋ค.
- fetch("์ฌ๊ธฐ์ URL์ ์ ๋ ฅ") : URL๋ก ์น ํต์ ์์ฒญ์ ๋ณด๋ผ ๊ฑฐ์ผ!
- ๊ดํธ ์์ URL๋ฐ์ ๋ค์ด์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ์ํ์ธ GET!
- .then() : ํต์ ์์ฒญ์ ๋ฐ์ ๋ค์ ์ด๋ ๊ฒ ํ ๊ฑฐ๋ค!
- res ⇒ res.json()
- ํต์ ์์ฒญ์ ๋ฐ์ ๋ฐ์ดํฐ๋ res๋ผ๋ ์ด๋ฆ์ ๋ถ์ธ๋ค.(๋ณ๊ฒฝ ๊ฐ๋ฅ)
- res๋ JSON ํํ๋ก ๋ฐ๊ฟ์ ์กฐ์ํ ์ ์๊ฒ ํ๋ค!
- .then(data ⇒ {}) : JSON ํํ๋ก ๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ data๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ถ์ธ๋ค.
์ด๋ ๊ฒ fetch์ OpenApi๋ฅผ ํ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ถ๋ ฅ๊น์ง ๊ฐ๋ฅํ๋ค.
function hey() {
let url = 'http://spartacodingclub.shop/sparta_api/seoulair'; //open api URL
fetch(url).then(res => res.json()).then(data => { //open api์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ data๋ผ๋ ๋ณ์์ ์ ์ฅ~!
let rows = data['RealtimeCityAir']['row'];
rows.forEach(a => {
let gu_name = a['MSRSTE_NM']; //๊ตฌ ์ด๋ฆ
let gu_mise = a['IDEX_NM']; //๊ตฌ ๋ฏธ์ธ๋จผ์ง
console.log(gu_name, gu_mise);
});
//console.log(data['RealtimeCityAir']['row'][0]); //data - RealtimeCityAir - row - 0๋ฒ์งธ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ!
})
}
fetch๋ฅผ ์ด์ฉํด์ ๋ฏธ์ธ๋จผ์ง ์์น๊ฐ 40 ์ด์์ด๋ผ๋ฉด ๋นจ๊ฐ์ ๊ธ์จ๋ก ํ์ํ๊ฒ๋ ํ ์๋ ์๋ค ๐ฎ
.bad {
color: red;
}
function q1() {
let url = 'http://spartacodingclub.shop/sparta_api/seoulair'; //open api URL
$('#names-q1').empty();
fetch(url).then(res => res.json()).then(data => { //open api์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ data๋ผ๋ ๋ณ์์ ์ ์ฅ~!
let rows = data['RealtimeCityAir']['row'];
rows.forEach(a => {
let gu_name = a['MSRSTE_NM']; //๊ตฌ ์ด๋ฆ
let gu_mise = a['IDEX_MVL']; //๊ตฌ ๋ฏธ์ธ๋จผ์ง ๋๋
//console.log(gu_name, gu_mise);
let temp_html = ``;
if (gu_mise > 40) {
temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>`;
} else {
temp_html = `<li>${gu_name} : ${gu_mise}</li>`;
}
$('#names-q1').append(temp_html);
});
//console.log(data['RealtimeCityAir']['row'][0]); //data - RealtimeCityAir - row - 0๋ฒ์งธ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ!
})
}
์ถ์ต์จ๋ฒ - Fetch ์ ์ฉํ๊ธฐ!
fetch ํจ์๋ฅผ ์ด์ฉํด์ ๋ฏธ์ธ๋จผ์ง์ ์ ๋๋ฅผ ๋ํ๋ผ ์ ์๋ค!!
$(document).ready(function () { //ํ์ด์ง ์ค๋น๊ฐ ๋ค ๋์์ ๋ ์คํ๋๋ ์ฝ๋์ด๋ค!
let url = "http://spartacodingclub.shop/sparta_api/seoulair";
fetch(url).then(res => res.json()).then(data => {
let mise = data['RealtimeCityAir']['row'][0]['IDEX_NM'];
//console.log(mise); //mise ์ถ๋ ฅํ๊ธฐ! - ์ข์๋ง ์ถ๋ ฅ๋๋ค.
$('#msg').text(mise); //span ํ๊ทธ ์์ '๋์จ'์ด๋ผ๋ ๋จ์ด๋ฅผ mise ๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ค๋ค. ํ์ํ ๊ณณ์ ํ
์คํธ๋ฅผ ๊ฐ์๋ผ์ ๋ค.
})
})
script ํ๊ทธ ์์ $(document).ready(function () { ... }) ํจ์๋ฅผ ์์ฑํ๋ค.
fetch ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ฃผ์ด์ง URL์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ fetch(url).then(res => res.json()) ์ ํตํด ๋ฐํ๋ ์๋ต ๋ด์ฉ์ JSON ํ์์ผ๋ก ๋ง๋ ๋ค.
.then(data => { ... }) ์ผ๋ก JSON ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ mise ๋ณ์์ ๊ฐ์ ๋ด๋๋ค.
$('#msg').text(mise); ๋ฅผ ํตํด ํ
์คํธ๋ฅผ mise ๋ณ์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๋ค.
span ํ๊ทธ๋ฅผ ์ด์ฉํด์ ๋ฐ๊พธ๊ณ ์ถ์ ๋ถ๋ถ๋ง ๋ฐ๋ก ๋ฌถ๊ณ ๊ทธ ๋ถ๋ถ๋ง ๋ฐ๊ฟ ์ ์๋ค!
๋๋ง์ ์ถ์ต์จ๋ฒ ๋ฐ์ ํ์ฌ ์์ธ์ ๋ฏธ์ธ๋จผ์ง : ์ข์์ด ์๊ธด ๊ฒ์ ํ์ธํ ์ ์๋ค ๐ฎ๐ฎ
์คํ๋ฅดํํ๋ฆญ์ค - Fetch ์ ์ฉํ๊ธฐ!
fetch ํจ์๋ฅผ ์ด์ฉํด์ ํ์ฌ๊ธฐ์จ์ ๋ํ๋ผ ์ ์๋ค!!
$(document).ready(function () { //ํ์ด์ง ์ค๋น๊ฐ ๋ค ๋์์ ๋ ์คํ๋๋ ์ฝ๋์ด๋ค!
let url = "http://spartacodingclub.shop/sparta_api/weather/seoul";
fetch(url).then(res => res.json()).then(data => {
let temp = data['temp'];
$('#msg').text(temp);
})
})
์ถ์ต์จ๋ฒ์์ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ๋๊ฐ์ด ์ฌ์ฉํ์ฌ ํ์ฌ ๊ธฐ์จ์ผ๋ก ํ ์คํธ๋ฅผ ๋ฐ๊ฟ ์ ์๋ค.
๋ด๊ฐ ์ฐํ ์ฝํ
์ธ ์์ ํ์ฌ๊ธฐ์จ์ด ์๊ธด ๊ฒ์ ํ์ธํ ์ ์๋ค ๐ฎ๐ฎ
์ฌ๊ธฐ์ ํ๋ ํค๋งธ๋ ๋ถ๋ถ์ด ํ์ฌ ๊ธฐ์จ์ ์ ์ฉํด์ ํ
์คํธ๋ฅผ ๊ณ ์น๋ ๊ณผ์ ์์ ๊ธฐ์จ์ด ๋ฐ๋์ง ์์์ ์ฝ๋ ์ค๋ฅ์ธ ์ค ์์๋๋ฐ...
์๊ณ ๋ณด๋ ์์ฑํ ๊ธฐ์จ๊ณผ ํ์ฌ๊ธฐ์จ์ด ๋์ผํด์ ์ ๋ฐ๋๋ ๊ฒ์ด์๋ค....... ๐ฅฒ๐ฅฒ๐ฅฒ
์ฝ๋ ์ค๋ฅ๊ฐ ์๋์๋ ๊ฒ์ด ๋คํ์ด์๋ค ํด...
์์
๋ง์ง๋ง์ผ๋ก ์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ๋ค์ ๋ณต์ตํ๋ค๋ ๊ฐ๋
์ผ๋ก 3์ฃผ ์ฐจ์๋ ์์ ๊ฐ ์์๋ค.
์์ ์ฌ์ง์ ๋ณด๋ฉด์ ๊ฐ์ ํ์ด์ง๋ฅผ ๋ง๋๋ ์์ ์๋ค. ์์ ๋ฅผ ๋ง์ ์์ํ๊ณ ๋ ์ด๋ป๊ฒ ํด์ผ ํ๋ ๋ง๋งํ๋๋ฐ, ์์ ๋ฅผ ํธ๋ ์์๊ฐ ๋์์์๊ณ ์ฐจ๊ทผ์ฐจ๊ทผ ํ๋์ฉ ํด๊ฒฐํ๋ค ๋ณด๋ ๋ฐฐ์ ๋ ๋ด์ฉ๋ค์ด ๊ธฐ์ต์ด ๋ฌ๊ณ ๋๊ด์ ํ๋์ฉ ํด๊ฒฐํ ์ ์์๋ค.
๊ธ๊ณผ PostBox์ ์์น ๋ง์ถ๋ ๋ฐฉ๋ฒ์ margin๊ณผ padding ๊ฐ์ ํตํด ํด๊ฒฐํ ์ ์์๊ณ , ๊ธ์จ๋ฅผ ์งํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ b ํ๊ทธ๋ฅผ ํตํด ํด๊ฒฐํ ์ ์์๋ค.
์นด๋ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ด๊ฐ ์ํ๋ ๋ด์ฉ ๋ฃ๋ ๋ฐฉ๋ฒ ๋ฑ๋ฑ ์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ๋ค์ด ๋ชจ๋ ๋ชจ์ฌ์๋ ์์ ์ฒ๋ผ ๋๊ปด์ก๋ค.
ํ๋์ฉ ํด๊ฒฐํด ๋๊ฐ๋ค ๋ณด๋ ์๊ฐ์ ๊ฝค ์ค๋ ๊ฑธ๋ ธ์ง๋ง ์์ ๋ฅผ ์ ๋ถ ํด๊ฒฐํด์ ์์ ์ฌ์ง๊ณผ ๊ฐ์ ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์์๋ค ๐๐
์์ ๋ฅผ ํตํด ๋ด๊ฐ ๋ง๋ ์คํ๋ฅดํ ํธ๋ํ์ดํฐ ํ์ด์ง ๐คจ
+ ์ค๋ ์คํํ ๊ณํ
- SQL, ์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๊ฐ๊ฐ 2๋ฌธ์ ์ฉ ํ๊ธฐ!
- SQL ๋ฌธ์ ๋ ์ด๋ ต์ง ์๊ฒ ํด๊ฒฐํ๋๋ฐ ์๋ฐ ๋ฌธ์ ์์ ๋ฐฐ์ด ๊ฐ๋ ์ ์ ์ฉํ๋ ๋ฌธ์ ๊ฐ ์์๋ค. ์์ง ๋ฐฐ์ด์ ๋ํ ํ์คํ ๊ฐ๋ ์ด ์์๋ ์ํฉ์ด์ด์ ๊ตฌ๊ธ๋ง์ ํตํด ๋ฐฐ์ด์ ๋ํ ๊ฐ๋ ์ ํ์ธํ์๊ณ ๋ฌธ์ ๋ฅผ ๋ฌด์ฌํ ํด๊ฒฐํ ์ ์์๋ค.
- Java ์ ๋ฌธ ๊ฐ์_์ค์ฝํ, ํ๋ณํ ํํธ๋ฅผ ๋ค์ผ๋ ค๊ณ ํ์ง๋ง ์์ ์ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ ค์ ๋ด์ผ ์๊ฐํ ๊ณํ์ด๋ค!
์ค๋๋ ์์ฐฌ ํ๋ฃจ๋ฅผ ๋ณด๋๋ค๐๐
'Today I Learned(TIL) > ์คํ๋ฅดํ ๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์น ๊ฐ๋ฐ ์ข ํฉ_5์ฃผ์ฐจ (5) | 2024.11.01 |
---|---|
์น ๊ฐ๋ฐ ์ข ํฉ_4์ฃผ์ฐจ (6) | 2024.10.31 |
์น ๊ฐ๋ฐ ์ข ํฉ_2์ฃผ์ฐจ (5) | 2024.10.29 |
Spring ์ฌ์ ์บ ํ ํ์คํธ_๋ฐ๋ณต๋ฌธ ์ฐ์ตํ๊ธฐ (0) | 2024.10.29 |
์น ๊ฐ๋ฐ ์ข ํฉ_1์ฃผ์ฐจ (3) | 2024.10.28 |