Hello creators ๐
2-8_Ajax ํจ๊ป ์ฐ์ตํ๊ธฐ ๋ณธ๋ฌธ
2-8_Ajax ํจ๊ป ์ฐ์ตํ๊ธฐ
๋ถ์๋งค๋_HA 2023. 10. 6. 07:00โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (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)
}
}
})
}
- ์ง์์ฃผ๋๊ฒ ์์ผ๋ฉด -> ์
๋ฐ์ดํธ๊ฐ ์๋๋ผ '๋์ ' ์ด ๋๋ค. โญโญโญโญโญโญ -> so, `empty()` ๊น์ง ๊ผญ! ํด์ค ๊ฒ
<br>
<br>
### 6. 5๊ฐ๋ณด๋ค ์ ์ ๊ณณ ๋นจ๊ฐ์์ผ๋ก ์น ํ๊ธฐ
<br>
- css ์ฝ๋
``` 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๊ฐ ๋ฏธ๋ง ๋นจ๊ฐ์ ํ์] ์กฐ๊ฑด๋ฌธ ์คํ์ ๋ฐ๋์ ์ ๋๋์ง ํ ์คํธ / ํ ์คํธ ํ๋ ๊ฒ๋ ๋ฅ๋ ฅ์ด๋ผ๊ณ ์๊ฐํจ. โญโญโญโญโญ
'[WEB & AI] (feat. ์ทจ์ค) > ์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ_์น๊ฐ๋ฐ์ข ํฉ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2-10_Quiz_Ajax ์ฐ์ตํ๊ธฐ(2) (2) | 2023.10.06 |
---|---|
2-9_Quiz_Ajax ์ฐ์ตํ๊ธฐ(1) (2) | 2023.10.06 |
2-7_Ajax ์์ํ๊ธฐ (0) | 2023.10.06 |
2-6_์๋ฒ-ํด๋ผ์ด์ธํธ ํต์ ์ดํดํ๊ธฐ (4) | 2023.10.05 |
2-5_Quiz_JQuery ์ฐ์ตํ๊ธฐ (0) | 2023.10.05 |