AJAX๋ ๋ฌด์์ผ๊น?
๋น๋๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ์ XML(Asynchronous JavaScript And XML)์ ๋งํ๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์๊ฒ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ , ์๋ฒ๊ฐ ์๋ตํ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ฌ ์นํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๊ฐฑ์ ํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ๋งํ๋ค. AJAX๋ ํ์ด์ง์ ์๋ก๊ณ ์นจ ์์ด ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ์ ์๊ณ , ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ์์ ์ ์ํํ๋ ํน์ง์ ๊ฐ์ง๋ค.
๋ธ๋ผ์ฐ์ ์์ ์ ๊ณตํ๋ Web API์ธ XMLHttpRequest(HTTP๋น๋๊ธฐ ํต์ ์ ์ํ ๋ฉ์๋์ ํ๋กํผํฐ๋ฅผ ์ ๊ณต) ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค.
์์ ๊ทธ๋ฆผ์ ์ ํต์ ์ธ ์นํ์ด์ง์ ์๋ช ์ฃผ๊ธฐ(์ผ์ชฝ)์ Ajax(์ค๋ฅธ์ชฝ)์ ๋น๊ต ์ด๋ฏธ์ง์ด๋ค.
์ ํต์ ์ธ ์นํ์ด์ง์ ๊ฒฝ์ฐ(์ผ์ชฝ ์ด๋ฏธ์ง)
htmlํ๊ทธ๋ก ์์ํ์ฌ html ํ๊ทธ๋ก ๋๋๋ ์์ ํ HTML์ ์๋ฒ๋ก๋ถํฐ ์ ์ก๋ฐ์ ์นํ์ด์ง ์ ์ฒด๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๋ ๋๋ง ํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ํ๋ฉด์ด ์ ํ๋๋ฉด ์๋ฒ๋ก๋ถํฐ ์๋ก์ด HTML์ ์ ์ก๋ฐ์ ์นํ์ด์ง ์ ์ฒด๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๋ ๋๋ง ํ๋ค.
- ์ด์ ์นํ์ด์ง์ ์ฐจ์ด๊ฐ ์์ด์ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ๊น์ง ํฌํจ๋ ์์ ํ HTML์ ์๋ฒ๋ก๋ถํฐ ๋งค๋ฒ ๋ค์ ์ ์ก๋ฐ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๋ฐ์ดํฐ ํต์ ์ด ๋ฐ์ํ๋ค.
- ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ๊น์ง ์ฒ์๋ถํฐ ๋ค์ ๋ ๋๋ง ํ๋ค. ์ด๋ก ์ธํด ํ๋ฉด ์ ํ์ด ์ผ์ด๋๋ฉด ํ๋ฉด์ด ์๊ฐ์ ์ผ๋ก ๊น๋นก์ด๋ ํ์์ด ๋ฐ์ํ๋ค.
- ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ํต์ ์ด ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ก๋ถํฐ ์๋ต์ด ์์ ๋๊น์ง ๋ค์ ์ฒ๋ฆฌ๋ ๋ธ๋กํน๋๋ค.
AJAX ์นํ์ด์ง์ ๊ฒฝ์ฐ(์ค๋ฅธ์ชฝ ์ด๋ฏธ์ง)
Ajax์ ๋ฑ์ฅ์ผ๋ก ์ด์ ์ ์ ํต์ ์ธ ํจ๋ฌ๋ค์์ ํ๊ธฐ์ ์ผ๋ก ์ ํํ๊ฒ ๋๋๋ฐ, ์๋ฒ๋ก๋ถํฐ ์นํ์ด์ง์ ๋ณ๊ฒฝ์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ ์ก๋ฐ์ ์นํ์ด์ง๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ์ ๋ค์ ๋ ๋๋ง ํ์ง ์๊ณ , ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ๋ง ํ์ ์ ์ผ๋ก ๋ ๋๋ง ํ๋ ๋ฐฉ์์ด ๊ฐ๋ฅํด์ก๋ค. ์ด๋ก์ธํด ๋ธ๋ผ์ฐ์ ์์ ๋น ๋ฅธ ํผํฌ๋จผ์ค์ ๋ถ๋๋ฌ์ด ํ๋ฉด ์ ํ์ด ๊ฐ๋ฅํด์ก๋ค.
- ๋ณ๊ฒฝํ ๋ถ๋ถ์ ๊ฐฑ์ ํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ง ์๋ฒ๋ก๋ถํฐ ์ ์ก๋ฐ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๋ฐ์ดํฐ ํต์ ์ด ๋ฐ์ํ์ง ์๋๋ค.
- ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ์ ๋ค์ ๋ ๋๋งํ์ง ์๋๋ค. ๋ฐ๋ผ์ ํ๋ฉด์ด ์๊ฐ์ ์ผ๋ก ๊น๋นก์ด๋ ํ์์ด ๋ฐ์ํ์ง ์๋๋ค.
- ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ํต์ ์ด ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ธ ์ดํ ๋ธ๋กํน์ด ๋ฐ์ํ์ง ์๋๋ค.
HTTP Requerst ์์
ํด๋น ์์ ๋ mdn์์ ๊ฐ์ ธ์จ ์์ ๋ก, vanilla.js๋ก ์์ฑ๋์๋ค.
<button id="ajaxButton" type="button">Make a request</button>
<script>
(function() {
var httpRequest;
document.getElementById("ajaxButton").addEventListener('click', makeRequest);
function makeRequest() {
httpRequest = new XMLHttpRequest();
if(!httpRequest) {
alert('XMLHTTP ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์๊ฐ ์์ด์ ใ
ใ
');
return false;
}
httpRequest.onreadystatechange = alertContents;
httpRequest.open('GET', 'test.html');
httpRequest.send();
}
function alertContents() {
if (httpRequest.readyState === XMLHttpRequest.DONE) {
if (httpRequest.status === 200) {
alert(httpRequest.responseText);
} else {
alert('request์ ๋ญ๊ฐ ๋ฌธ์ ๊ฐ ์์ด์.');
}
}
}
})();
</script>
- ์ฌ์ฉ์๋ ๋ธ๋ผ์ฐ์ ์์ <Make a request>๋ผ๋ ๋ฒํผ์ ํด๋ฆญํ๋ค.
- ๋ฒํผ์ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ makeRequest() ํจ์๋ฅผ ํธ์ถํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๊ณ , onreadystatechange ์ ์ค์ ๋ alertContents() ํจ์๊ฐ ์คํ๋๋ค.
- alertContents() ํจ์๋ ์๋ฒ๋ก๋ถํฐ ์๋ต์ ๋ฐ์๋์ง์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋ ์๋ต์ธ์ง๋ฅผ ๊ฒ์ฌํ์ฌ, ์ ์์ ์ธ ๊ฒฝ์ฐ test.html ํ์ผ์ ๋ด์ฉ์ ํ๋ผ๋ฏธํฐ๋ก alertI() ํจ์๋ฅผ ํธ์ถํ๋ค.
๐ธ ์ถ์ฒ ๐ธ
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ HTML5 ] HTML5 ์ถ๊ฐ ๊ธฐ๋ฅ ์ค๋ช (0) | 2023.04.23 |
---|---|
[์๋ฌ] 400 Bad Request Request Header Or Cookie Too Large (0) | 2023.02.09 |
[ WEB ] HTTP Header(ํค๋) - 1 (0) | 2022.12.18 |
[ WEB ] Cookie์ ๋ํ ์ ๋ฆฌ ๊ธ (0) | 2022.11.27 |
[ WEB ] Web Storage์ ๋ํด ์์๋ณด๊ธฐ. (0) | 2022.09.04 |