Hello creators ๐
2-9_Quiz_Ajax ์ฐ์ตํ๊ธฐ(1) (feat. ๋ฐ๋ฆ์ด api, ajax, append(), api ์ฐ๊ฒฐ) ๋ณธ๋ฌธ
[WEB & AI] (feat. ์ทจ์ค)/ํ๋ก ํธ&๋ฐฑ์๋
2-9_Quiz_Ajax ์ฐ์ตํ๊ธฐ(1) (feat. ๋ฐ๋ฆ์ด api, ajax, append(), api ์ฐ๊ฒฐ)
๋ถ์๋งค๋_HA 2023. 1. 28. 13:46728x90
๋ฐ์ํ
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal)
1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ
- ๋ฐ๋ฆ์ด ๋ฐ์ดํฐ๋ก ์ด๋ ๊ฒ ๋ง๋ค๊ธฐ
- ์ ๋ฐ์ดํธ ๋ฒํผ ๋๋ฅด๋ฉด -> ๋์ค๊ฒ
- 5๊ฐ ๋ฏธ๋ง์ด๋ฉด -> ๋นจ๊ฐ์
โ ก. ๋ฐ๋ฆ์ด API ๋ฐ์ดํฐ ๊ตฌ์กฐ ํ์ธ
1. ํด๋ด
- ๋ฐ๋ฆ์ด API
http://spartacodingclub.shop/sparta_api/seoulbike
- ๋ณด๋ฉด์ ํ์ธํ ๊ฒ
- ์ ์ฒด ๋ฐ์ดํฐ ๊ตฌ์กฐ
- ํ์ํ ํญ๋ชฉ ์ด๋ฆ ์ฒดํฌ
โ ข. ajax ํด์ฆ 1
1. ๊ธฐ๋ณธ ์ ๊ณต ์ฝ๋
<!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() {
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
}
</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">
<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>
</body>
</html>
2. ''์ด๋ค html tag
'' ๋ฅผ ๋ฃ์ด์ผ '์ํ๋ ๋ ๋๋ง'์ด ๋๋์ง ํ์ธ
- ๋ ๋๋ง ๋๊ฑธ ๋์ผ๋ก ๋ณด๋ฉด -> ์นธ ๋ค์ด ๋ค์ด๊ฐ์ผ ํจ
- ์นธ ์ ํํํ๋ html tag ๋? ->
tr
์ด ๋ ์๋ค
- ๊ทธ๊ฑธ ํฌํจํ๋ tag ์ id ๋ฃ๊ธฐ
โญโญโญโญโญ ๋ ๋๋ง ๋์ด์ผ ํ๋ ๊ฒ -> ๊ทธ๊ฑฐ์ ํด๋นํ๋ html ํ๊ทธ -> ํฌ๊ดํ๋ id ํ์ธ ์์ผ๋ก
3. ajax ๋ก ๋ฐ์์์ console ์ ์ฐ๊ธฐ : for ๋ฌธ์ ๋๋ฆด ์ ์๊ธฐ ์ ๊น์ง ์ฐ๊ธฐ
<script>
function q1() {
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/sparta_api/seoulbike",
data: {},
success: function (response) {
console.log(response['getStationList']['row'])
}
})
}
</script>
- ์ฃผ์!
- ๊ธฐ์กด์ ์์ฑ๋ ์ ์ฒด ์ฝ๋์์
q1
์ด ์คํ๋๋ ์กฐ๊ฑด์์ ๋ฐ์ดํธ ๋ฒํผ ํด๋ฆญ
์. ๋ฐ๋ผ์, ๊ทธ๊ฑธ ํด๋ฆญํด์ผ response ๋ฅผ ์ฐ์ด๋ณผ ์ ์์. โญโญโญโญโญ - console ๋ก ์ฐ์ ๋, for๋ฌธ ์ผ๋ก ๋๋ฆด ์ ์๋ ์ํ๊น์ง ํ์ธํ๊ธฐ -> ๊ทธ๋ฌ๋ฉด, ๋ณ์์ ๋ฃ๊ธฐ ์ข์ โญโญโญโญโญโญโญ
- ๊ธฐ์กด์ ์์ฑ๋ ์ ์ฒด ์ฝ๋์์
4. ๋ณ์์ ๋ฃ๊ณ for๋ฌธ ๋๊ธฐ๊ธฐ
- ์์ฑ ์ฝ๋
<script>
function q1() {
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
$.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 name = rows[i]['stationName']
let rack = rows[i]['rackTotCnt']
let bike = rows[i]['parkingBikeTotCnt']
console.log(name, rack, bike)
}
}
})
}
</script>
- ์ค์ํ ๊ฒ
- ์ด๋, ๋ด๊ฐ ์ํ๋ ๋๋ก console ์ ์ฐํ๋์ง ๊ผญ! ํ์ธ โญโญโญโญโญ
- ๊ฒฐ๊ณผ๋ฌผ
5. jquery_append ์ฌ์ฉํด์ ์ํ๋ html ๋ง๋ค์ด์ฃผ๊ธฐ
- ์ฐ์ ๋์๊ฐ๋ ์ฝ๋
<script>
function q1() {
// empty() = ์
๋ฐ์ดํธ ๊ธฐ๋ฅ ํต์ฌ โญโญโญโญโญ
$('#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 name = rows[i]['stationName']
let rack = rows[i]['rackTotCnt']
let bike = rows[i]['parkingBikeTotCnt']
let temp_html = `<tr>
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>`
$('#names-q1').append(temp_html)
}
}
})
}
</script>
- ์ง์์ฃผ๋๊ฒ ์์ผ๋ฉด -> ์
๋ฐ์ดํธ๊ฐ ์๋๋ผ '๋์ ' ์ด ๋๋ค. โญโญโญโญโญโญ -> so,
empty()
๊น์ง ๊ผญ! ํด์ค ๊ฒ
6. 5๊ฐ๋ณด๋ค ์ ์ ๊ณณ ๋นจ๊ฐ์์ผ๋ก ์น ํ๊ธฐ
- css ์ฝ๋
.urgent {
color: red;
}
- ์ ๋๋์ง ํ ์คํธ
let temp_html = `<tr class = "urgent">
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>`
- ์กฐ๊ฑด๋ฌธ ์คํ์ ๋ฐ๋์ ์ ๋๋์ง ํ
์คํธ
- ์ด๊ฑธ ํ๋๊ฒ ์ค์ํจ โญโญโญโญโญ
- ์กฐ๊ฑด๋ฌธ ์ ์ฉํด์ ๋ฃ์ด์ฃผ๊ธฐ
<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 name = rows[i]['stationName']
let rack = rows[i]['rackTotCnt']
let bike = rows[i]['parkingBikeTotCnt']
// ๋น์ด์๋ temp html
let temp_html = ` `
if (bike < 5) {
temp_html = `<tr class = "urgent">
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>`
} else {
temp_html = `<tr>
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>`
}
$('#names-q1').append(temp_html)
}
}
})
}
</script>
- ๊ต์ฅํ ์ค์ํ ํจํด์ธ ๊ฒ ๊ฐ์๋ฐ โญโญโญโญโญโญโญโญโญโญโญโญ
๐ญ What i learned
- '๋ ๋๋ง ๋์ด์ผ ํ๋ ๊ฒ', '์ด๋ค html ํ๊ทธ?' '๊ทธ๊ฑธ ํฌ๊ดํ๋ id' ๋ฅผ ํ์ธ ์์ผ๋ก ์งํ
- [ajax ๋ก ๋ฐ์์์ console ์ ์ฐ์ ๋] ๊ธฐ์กด์ ์์ฑ๋ ์ ์ฒด ์ฝ๋์์
q1
์ด ์คํ๋๋ ์กฐ๊ฑด์์ ๋ฐ์ดํธ ๋ฒํผ ํด๋ฆญ
์. ๋ฐ๋ผ์, ๊ทธ๊ฑธ ํด๋ฆญํด์ผ response ๋ฅผ ์ฐ์ด๋ณผ ์ ์์. โญโญโญโญโญ - [ajax ๋ก ๋ฐ์์์ console ์ ์ฐ์ ๋] console ๋ก ์ฐ์ ๋, for๋ฌธ ์ผ๋ก ๋๋ฆด ์ ์๋ ์ํ๊น์ง ํ์ธํ๊ธฐ -> ๊ทธ๋ฌ๋ฉด, ๋ณ์์ ๋ฃ๊ธฐ ์ข์ โญโญโญโญโญโญโญ
- [๋ณ์ ๋ฃ๊ณ for ๋ฌธ ๋๋ฆฌ๊ธฐ] for ๋ฌธ์ ๋ฃ๊ณ ๋ณ์์ ๋๋ฆด ๋, ๋ด๊ฐ ์ํ๋๋๋ก ์ฐํ๋์ง ๊ผญ ํ์ธ
- [์ํ๋ HTML ๋ง๋ค๋] ์ง์์ฃผ๋๊ฒ ์์ผ๋ฉด -> ์
๋ฐ์ดํธ๊ฐ ์๋๋ผ '๋์ ' ์ด ๋๋ค. โญโญโญโญโญโญ -> so,
empty()
๊น์ง ๊ผญ! ํด์ค ๊ฒ - [5๊ฐ ๋ฏธ๋ง ๋นจ๊ฐ์ ํ์] ์กฐ๊ฑด๋ฌธ ์คํ์ ๋ฐ๋์ ์ ๋๋์ง ํ ์คํธ / ํ ์คํธ ํ๋ ๊ฒ๋ ๋ฅ๋ ฅ์ด๋ผ๊ณ ์๊ฐํจ. โญโญโญโญโญ
728x90
๋ฐ์ํ
'[WEB & AI] (feat. ์ทจ์ค) > ํ๋ก ํธ&๋ฐฑ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments