Ajax

Ajax๋ผ๋Š” ๋‹จ์–ด๋Š” ๊ทธ๋™์•ˆ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ˆ˜๋„ ์—†์ด ๋งŽ์ด ๋“ค์€ ํ‚ค์›Œ๋“œ์ด๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ๋น„๋™๊ธฐํ†ต์‹ ๋•Œ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ ๋งŒ ์•Œ๊ณ  ๋„˜์–ด๊ฐ”์—ˆ๋Š”๋ฐ, ๋ณธ๊ฒฉ์ ์œผ๋กœ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ์œผ๋‹ˆ ํ•ด๋‹น ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋กํ•˜์ž.

Ajax?

Asynchronous Javascript and XML ์˜ ์•ฝ์ž์ด๋‹ค. ํ•œ๋ฒˆ ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ํ•ด์„ํ•ด๋ณด์ž.

๋น„๋™๊ธฐ์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ XML. ๋ญ”๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ xml์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋™๊ธฐ์ ์œผ๋กœ ํ†ต์‹ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๊ธฐ๋ณธ์ ์œผ๋กœ html form ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ๋™๊ธฐ์ ์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

<form action="test.com" method="POST" name="test">
  .
  .
  .
</form>

์šฐ๋ฆฌ๊ฐ€ ํŽ˜์ด์ง€์˜ ์•„์ฃผ ์ž‘์€ ๋ถ€๋ถ„๋งŒ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์š”์ฒญ์„ ํ•ด๋„ ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ „์ฒด๋ฅผ ์‘๋‹ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ํŽ˜์ด์ง€์˜ ๋ฆฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚œ๋‹ค. ์„ค์ƒ๊ฐ€์ƒ์œผ๋กœ ๋™์‹œ์— ์š”์ฒญ์ด ๋ชฐ๋ ค ์‘๋‹ต์‹œ๊ฐ„์ด ๋Šฆ์–ด์ง„๋‹ค๋ฉด ์‘๋‹ต์„ ๋ฐ›๊ธฐ ์ „์—๋Š” ์–ด๋– ํ•œ ์ž‘์—…๋„ ์‹ค์‹œํ• ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฒŒ์–ด์ง„๋‹ค... ์ด ๋ฐฉ์‹์€ ux์ธก๋ฉด์—์„œ ๋งค์šฐ ๋ถˆํŽธํ•˜๊ณ  ๋น„ํšจ์œจ์ ์ด๋‹ค.

๋”ฐ๋ผ์„œ, ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„ ๋น„๋™๊ธฐ์ ์ธ ํ†ต์‹ ์„ ์‹ค์‹œํ•ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฐ”๋€”์ˆ˜ ์žˆ๋„๋ก, ์š”์ฒญ์ด ์˜ค๊ธฐ ์ „์—๋„ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ• ์ˆ˜ ์žˆ๋„๋ก ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ์ž‘ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•ด ์ฃผ๋Š”๊ฒƒ์ด ๋ฐ”๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Ajax์ด๋‹ค.

function reqTest(e) {
  console.log(e.currentTarget.response);
}

let oReq = new XMLHttpRequest();

oReq.addEventListner("load", reqTest);
oReq.open("GET", "./test");
oReq.send();

(์‚ฌ์‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ajax๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” jquery๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ง๊ด€์ ์ด๊ณ  ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.)

๋™์ž‘

๊ทธ๋Ÿผ ์ด์ œ Ajax๊ฐ€ ์–ด๋–ค์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ•œ๋ฒˆ ์•Œ์•„๋ณด์ž.

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋จผ์ € ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋กœ ์ธํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

  • ์„œ๋ฒ„์—์„œ ์š”์ฒญ๋ฐ›์€ XMLHttpRequest๊ฐ์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  html, xml, json ํ˜•ํƒœ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.

xml์ด๋ž€ Extensible Markup Language์˜ ์•ฝ์ž๋กœ ๋งˆํฌ์—…์–ธ์–ด๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ด๋‹ค. ์‚ฌ์šฉ์ž ์ž„์˜๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž„์˜์˜ ํƒœ๊ทธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต๋ฐ›์€ ๋ฐ์ดํ„ฐ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•„์š”ํ–ˆ๋˜ ๋ถ€๋ถ„์„ ๋ฆฌ๋ Œ๋”๋งํ•œ๋‹ค.

๋น„๋™๊ธฐ์  ํ†ต์‹ ์„ ์‹ค์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ธํ›„ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š์•„๋„ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๋ฆฌ

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ๊ฒƒ์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๋Š” Ajax๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์š”์ฒญ ์ดํ›„ ๋‹ค๋ฅธ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ€์ ธ์˜ฌ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์‘๋‹ต์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด ajax๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋˜ ๋ฐฉ์‹๋ณด๋‹ค ์ฒ˜๋ฆฌ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์‘๋‹ต๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ์–‘๋„ ์ ๋‹ค.

ํ•˜์ง€๋งŒ ajax์—์„œ ์‚ฌ์šฉํ•˜๋Š” XMLHttpRequest๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง„ํ–‰์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š”๋‹ค. ์‰ฝ๊ฒŒ๋งํ•ด XMLHttpRequest๋Š” "ํ˜„์žฌ ๋ณด๋‚ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต๊นŒ์ง€ ~~์ •๋„ ์™„๋ฃŒ๋˜์—ˆ๋‹ค" ์˜ ์ •๋ณด๋ฅผ ์ฃผ์ง€ ์•Š์•„ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š์•˜์Œ์—๋„ ํŽ˜์ด์ง€๋ฅผ ์ดํƒˆํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ธฐ๋Šฅ์˜ ์˜ค์ž‘๋™์„ ์ผ์œผํ‚ฌ ์šฐ๋ ค ๋˜ํ•œ ์กด์žฌํ•œ๋‹ค.

  • ์ถ”๊ฐ€์ ์œผ๋กœ ajax๊ฐ™์€ ๋น„๋™๊ธฐ ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ตํžˆ ์•Œ๊ณ ์žˆ๋Š” axios์™€ fetch๊ฐ€ ์žˆ๋Š”๋ฐ ์ด ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”ํ›„ ๋”ฐ๋กœ ํฌ์ŠคํŒ…ํ•ด์„œ ๋‹ค๋ค„๋ณด๋ ค๊ณ ํ•œ๋‹ค.

Last updated