AJAX - swkim0128/PARA GitHub Wiki
Ajax(Asynchronous JavaScript and XML)๋ ์ธ์ด๋ ํ๋ ์์ํฌ๊ฐ ์๋ ๊ตฌํํ๋ ๋ฐฉ์์ ์๋ฏธ.
Ajax๋ ์น์์ ํ๋ฉด์ ๊ฐฑ์ ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธ.
JavaScript์ XMLHttpRequest(XHR) ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์กฐํ.
ํ๋ฉด ๊ฐฑ์ ์ด ์์ผ๋ฏ๋ก ์ฌ์ฉ์ ์ ์ฅ์์๋ ํธ๋ฆฌํ์ง๋ง, ๋์ ์ผ๋ก DOM์ ๊ตฌ์ฑํด์ผ ํ๋ฏ๋ก ๊ตฌํ์ด ๋ณต์ก.
์ผ๋ฐ ์์ฒญ์ ๋ํ ์๋ต.
- data๋ฅผ ์ ๋ ฅ ํ event ๋ฐ์.
- Ajax๋ฅผ ์ ์ฉํ์ง ์์ ์์ฒญ์ ์๋ฒ์์ data๋ฅผ ์ด์ฉํ์ฌ logic ์ฒ๋ฆฌ.
- logic ์ฒ๋ฆฌ์ ๋ํ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์๋ต page๋ฅผ ์์ฑํ๊ณ client์ ์ ์ก(ํ๋ฉด ์ ํ์ด ์ผ์ด ๋จ)
Ajax ์์ฒญ์ ๋ํ ์๋ต
- data๋ฅผ ์ ๋ ฅ ํ event ๋ฐ์
- Ajax๋ฅผ ์ ์ฉํ๋ฉด event ๋ฐ์ ์ ์๋ฒ์์ ์์ฒญ์ ์ฒ๋ฆฌํ ํ Text, XML ๋๋ JSON์ผ๋ก ์๋ต
- client(Browser)์์๋ ์ด ์๋ต data๋ฅผ ์ด์ฉํ์ฌ ํ๋ฉด ์ ํ์์ด ํ์ฌ ํ์ด์ง์์ ๋์ ์ผ๋ก ํ๋ฉด์ ์ฌ๊ตฌ์ฑ.
์น ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ์๋ฒ ์ค์ฌ์ ์ํธ ์์ฉ ๋ฐฉ์๊ณผ ํด๋ผ์ด์ธํธ ์ค์ฌ์ ์ํธ์์ฉ ๋ฐฉ์์ผ๋ก ๊ตฌ๋ถ.
์๋ฒ ์ค์ฌ์ ๊ฐ๋ฐ๋ฐฉ์์ ํ๋ฉด ๊ตฌ์ฑ์ด ์๋ฒ์์ ์ด๋ฃจ์ด ์ง๋ค. (ํ๋ฆฌ์ ํ ์ด์ ์์ญ์ JSP๋ PHP, ASP ๋ฑ)
ํด๋ผ์ด์ธํธ ์ค์ฌ์ ๊ฐ๋ฐ ๋ฐฉ์์ ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )์์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ค.(์ฃผ๋ก JavaScript)
Ajax๋ ํด๋ผ์ด์ธํธ ์ค์ฌ์ ๊ฐ๋ฐ๋ฐฉ์์ด๋ฉฐ ๋น๋๊ธฐ ์์ฒญ๋ณด๋ค๋ ๋์ ํ๋ฉด ๊ตฌ์ฑ์ด ๊ด๊ฑด์.
XMLHttpRequest๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ Ajax ๋ฐฉ์์ผ๋ก ํต์ ํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด.
XMLHttpRequest ๊ฐ์ฒด๋ Ajax ํต์ ์ ์ ์ก๋ฐฉ์, ๊ฒฝ๋ก, ์๋ฒ๋ก ์ ์กํ data๋ฑ ์ ์ก์ ๋ณด๋ฅผ ๋ด๋ ์ญํ .
์ค์ ์๋ฒ์์ ํต์ ์ ๋ธ๋ผ์ฐ์ ์ Ajax์์ง์์ ์ํ.
์ง์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก Ajax๋ฅผ ํ๋ก๊ทธ๋๋ฐํ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ณ๋ก ํต์ ๋ฐฉ์์ด ๋ฌ๋ผ ์ฝ๋๊ฐ ๋ณต์กํด ์ง๋ค.
JavaScript AJAX ์ ์ฉ ์
$.ajax()
$.ajax() ํจ์๋ jQuery์์ Ajax ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํจ์.
๋ค๋ฅธ ํจ์๋ค์ ๋นํ์ฌ ์ต์ ์ ๋ค์ํ๊ฒ ์ง์ ํ ์ ์์ผ๋ฉฐ ์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ.
ํจ์์ ์ต์ ์ ๋ค์ํ์ง๋ง ๋๋ถ๋ถ ์๋์ผ๋ก ์ง์ ํ๋ฏ๋ก ์๋ต ๊ฐ๋ฅ.
Server์ ์๊ฐ์ ์ถ๋ ฅํ๋ ์์
์ง์ ๋ HTTP Method๋ก Ajax ํต์ ์ ํ๋ฉฐ get()์ GET ๋ฐฉ์์, post()๋ POST ๋ฐฉ์์ ์ฌ์ฉ.
$.xxx(url, function (result, textStatus, jqXHR){});
$.xxx(url, data, function (result, textStatus, jqXHR){});
- GET ๋ฐฉ์๊ณผ POST๋ฐฉ์
GET ๋ฐฉ์์ ํน์ง
- URL์ ๋ณ์(๋ฐ์ดํฐ)๋ฅผ ํฌํจ์์ผ ์์ฒญํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ Header(ํค๋)์ ํฌํจํ์ฌ ์ ์กํ๋ค.
- URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋์ด ๋ณด์์ ์ทจ์ฝํ๋ค.
- ์ ์กํ๋ ๊ธธ์ด์ ์ ํ์ด ์๋ค.
- ์บ์ฑํ ์ ์๋ค.
POST ๋ฐฉ์์ ํน์ง
- URL์ ๋ณ์(๋ฐ์ดํฐ)๋ฅผ ๋ ธ์ถํ์ง ์๊ณ ์์ฒญํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ Body์ ํฌํจ์ํจ๋ค.
- URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋์ง ์์์ ๊ธฐ๋ณธ ๋ณด์์ ๋์ด์๋ค.
- ์ ์กํ๋ ๊ธธ์ด์ ์ ํ์ด ์๋ค.
- ์บ์ฑํ ์ ์๋ค.
$(selector).load().
$.load() ํจ์๋ ์๋ฒ๋ก๋ถํฐ ๋ด์ฉ์ ์กฐํํ์ฌ, ์ ํ์๋ฅผ ํตํด ํ์ํ DOM ๊ฐ์ฒด์ ๋์ ์ผ๋ก ์ฝ์ .
์ฒซ ๋ฒ์งธ ์ธ์๋ ํ์ ๊ฐ์ผ๋ก HTML์ ์กฐํํ ์๋ฒ URL์ ์ง์ .
๋ ๋ฒ์งธ ์ธ์๋ ์์ฒญ ์ ์๋ฒ์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ์ง์ .
์ธ ๋ฒ์งธ ์ธ์๋ ์๋ฒ์ ํต์ ์ ์๋ฃํ ํ์ ์ํํ ์ฝ๋ฐฑํจ์๋ฅผ ์ง์ .
server์ client๋ ์ฃผ๊ณ ๋ฐ์ data์ ํ์์ ๋ง์ถฐ์ผ ํจ.
๋ํ์ ์ธ dataํ์์ CSV, XML, JSON ๋ฑ์ด ์์.
-
CSV(Comma Separated Values)
๊ฐ ํญ๋ชฉ์ ์ผํ(,)๋ก ๊ตฌ๋ถํด ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ.
๋ค๋ฅธ ๋ ํ์์ ๋นํด ๊ต์ฅํ ์งง๋ค. ๋ง์ ์์ ๋ฐ์ดํฐ ์ ์ก ์ ์ ๋ฆฌ.
๋จ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๋ด์ฉ์ธ์ง ํ์ ํ๊ธฐ ์ด๋ ต๋ค. (์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒฝํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ณต์ ํ ๊ฒฝ์ฐ ๊ฐ๋ฅ)
-
XML(eXtensible Markup Language)
xml์ tag๋ก data๋ฅผ ํํํจ.
tag๋ฅผ ๋ณด๋ฉด ๊ฐ data๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ํ์ ๊ฐ๋ฅ.
tag์ ์ฌ์ฉ์ ์ ์ ์์ฑ์ ๋ฃ์ ์ ์์ผ๋ฏ๋ก ๋ณต์กํ data ์ ๋ฌ ๊ฐ๋ฅ.
-
JSON (JavaScript Object Notation).
CSV์ XML์ ๋จ์ ์ ๊ทน๋ณตํ ํ์
JavaScript์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ ํ์์ผ๋ก data๋ฅผ ํํ.
Ajax ์ฌ์ฉ์ ๊ฑฐ์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ dataํํ ๋ฐฉ์.
Ajax๋ ์๋ฒ์ ํต์ ํ๋ ๊ณผ์ ์ด ์น ๋ธ๋ผ์ฐ์ ๋ด๋ถ์์ ์ด๋ฃจ์ด์ง๋ฏ๋ก ์ฌ์ฉ์๊ฐ ์งํ์ํฉ์ ์๊ธฐ ์ด๋ ต๋ค.
Ajax ์ ์ญํจ์๋ฅผ ์ฌ์ฉํ์ฌ Ajax ์ฒ๋ฆฌ ์ค์ ์งํ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค.
jQuery๋ Ajax ์ฒ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋ ๊ฐ ๋จ๊ณ ๋ณ๋ก ์ ์ญํจ์๋ฅผ ํธ์ถ.
๋จ, jQuery์ ์ ์ญํจ์๋ $.ajaxSetup() ํจ์์ global ํ๋กํผํฐ ์ค์ ์ด true์ธ ๊ฒฝ์ฐ์๋ง ์ํ๋จ. (๋ํดํธ : true)
- ๋ก๋ฉ ํ๋ฉด ๊ตฌํ