AJAX
๐ฐ AJAX(Asynchronous JavaScript and XML)
- ๋น๋๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ XML
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํ ํ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฒ
- AJAX๋ฅผ ์ด์ฉํด์ ์ ์ก๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ XML, TEXT, HTML, JSON
- ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง๊ณ ์๋ XMLHttpRequest ๊ฐ์ฒด ๋ฅผ ์ฌ์ฉํด ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก ๋ก๋ํ๋๊ฒ ์๋ ์ผ๋ถ๋ง์ ๋ก๋ํ๋ ๊ธฐ๋ฒ
๐ XMLHttpRequest(XHR) ๊ฐ์ฒด
- ํ์ฌ ๋๋ถ๋ถ์ ๋ชจ๋ํ ๋ธ๋ผ์ฐ์ ๋ XHR๊ฐ์ฒด๋ฅผ ๋ด์ฅํ๊ณ ์๋ค.
- ์ด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ์นํ์ด์ง๊ฐ ์ ๋ถ ๋ก๋ฉ๋ ํ์๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ฑฐ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ก๋ฐ์์ ์์ต๋๋ค.
- ์ฆ AJAX ๋น๋๊ธฐ ํต์ ์ ์ํด์XHR ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ(Request),ํ๊ณ ์๋ต(Response) ๋ฐ๋๋ค.
- XHR๊ฐ์ฒด๋ ์์ฑ์ ํจ์์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ new๋ฅผ ํตํด์ ์์ฑํด์ผํ๋ค.
๐ค ๋น๋๊ธฐ ๋ฐฉ์ ๊ณผ ๋๊ธฐ ๋ฐฉ์ ์ด๋?
[๋๊ธฐ ๋ฐฉ์]
์ผ๋ฐ์ ์ธ ๋๊ธฐ ํต์ ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด ์๋ฒ์์ ๊ทธ์ ์์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ๋ค ๋ ์ฌ์ด์ ์ฐ๊ฒฐ์ ๋๊ธฐ๊ฒ ๋๊ธฐ ๋ง๋ จ์ด๋ค.
์ด๋ ํด๋ผ์ด์ธํธ์์ ์๋กญ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ์ผ์ด ๋ฐ์ํ๋ฉด ํ์ด์ง ์ ์ฒด๋ฅผ ๋ฆฌ๋ก๋ ํ๊ฒ ๋๋ค.
[๋น๋๊ธฐ ๋ฐฉ์]
๋น๋๊ธฐ ํต์ ์ด๋ ์นํ์ด์ง๋ฅผ ๋ฆฌ๋ก๋ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด๋ฉฐ AJAX ๋ฅผ ํตํด์
์๋ฒ์ ์์ฒญ์ ํ ํ ๋ฉ์ถ์ด ์๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ํ๋ก๊ทธ๋จ์ ๊ณ์ ๋์๊ฐ๋ค๋ ์๋ฏธ๋ฅผ ๋ดํฌ ํ๊ณ ์๋ค.
๐ฌ ๋น๋๊ธฐ๋ฐฉ์ ์ผ๋ก ํ์ด์ง ๋ก๋์์ด ํต์ ๊ฐ๋ฅํ ์ด์ ๋?
๋๊ธฐ์(synchronous)์ ์์ฐจ์ ์ผ๋ก ์์ฒญ๊ณผ ์๋ต๊ฐ์ด ์ฒ๋ฆฌ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ(Request)์ ๋ณด๋ธ๋ค์ ์๋ต(Response)๋ฅผ ๋ฐ๊ธฐ ์ ๊น์ง Block ์ํ๋ก ๋๋ค.
Block ์ Request๋ฅผ ๋ณด๋ด๋ฉด Response๋ฅผ ๋ฐ๊ธฐ์ ๊น์ง ์๋ฌด๊ฒ๋ ํ์ง ๋ชปํ๋ ์ํ๋ก
์ด๋๋ฌธ์ Response๋ฅผ ๋ฐ๊ณ ๋ค์ Requset๋ฅผ ๋ณด๋ด๋ ์์ ์ด ์์ฐจ์ ์ผ๋ก ์งํ๋๊ณ ,
ํ๋์ Request๋ฅผ ๋ณด๋ธ ๋ค Response๋ฅผ ๋ฐ๊ธฐ ์ํด์ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ก๋ํด์ผ ๋๊ฒ ๋๋ค.
๋น๋๊ธฐ์(Asynchronous)๋ ๋๊ธฐ์๊ณผ๋ ๋ฐ๋๋ก Request๋ฅผ ๋ณด๋ด๊ณ Response๋ฅผ ์ธ์ ๋ฐ๋๋ผ๋ ์๊ด ์๋ ์ํ์ด๋ค.
ํด๋ผ์ด์ธํธ๋ Non-Block ์ํ๋ก Response๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์ผ๋ ๋ค๋ฅธ์ผ์ ํ ์ ์๋ค.
๋น๋๊ธฐ ํต์ ์ ์ด๋ฌํ ํน์ง์ผ๋ก ์ธํด Requset ์ Response๋ ์์ธ์ํ๋ก Block ์์ด ์ ์ง๊ฐ ๋๊ณ ,
ํ์ด์ง ๋ก๋ ์์ด ์ ์ฒด ํ๋ ์์ ๊ทธ๋๋ก ์๊ณ Requset ์ ๋ํ ๋ถ๋ถ๋ง ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ด ๊ฐ๋ฅํ๋ค.
๐ AJAX ์ฅ๋จ์
์ฅ์
- ์นํ์ด์ง์ ์๋ํฅ์
- ์๋ฒ์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ๊ธฐ์กด ์น์์๋ ๋ถ๊ฐ๋ฅํ๋ UI ๊ฐ๋ฐ๊ฐ๋ฅ
๋จ์
- ๋น๋๊ธฐ ํต์ ์ ๋๊ธฐ์๊ณผ ๋ฐ๋๋ก Response์ ๋ํ ์ฒ๋ฆฌ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅ๋ฐ์์ผ ๋๋ ์๋น์ค์๋ ์ ํฉํ์ง ์๋ค.
- ์ฐ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด ์๋ฒ ๋ถํ๊ฐ ์ฆ๊ฐํ ์ ์๋ค.
- AJAX๋ฅผ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๋ ์๋ค.
- HTTP ํด๋ผ์ด์ธํธ์ ๊ธฐ๋ฅ์ด ํ์ ๋์ด ์๋ค.
- XMLHttpRequest๋ฅผ ํตํด ํต์ ํ๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์์๊ฒ ์๋ฌด๋ฐ ์งํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง์ง ์๋๋ค. (์์ฒญ์ด ์๋ฃ๋์ง ์์๋๋ฐ ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ๋ ๋๊ฑฐ๋ ์ค์๋ํ ์ฐ๋ ค๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.)
์ฐธ๊ณ
- http://tcpschool.com/xml/xml_dom_xmlHttpRequest
- https://www.yalco.kr/21_async/
- https://velog.io/@songsong2920/Ajax