๐Ÿ“ž AJAX

๊น€์ฒ ์ค€ยท2022๋…„ 4์›” 8์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
11/16

Ajax๋Š” ํ˜„๋Œ€ ๋™์ ์ธ ์›น์—์„œ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” javascript ๊ธฐ์ˆ ์ด๋‹ค.
๋˜ํ•œ ๊ธฐ์ˆ  ๋ฉด์ ‘์—์„œ ์ž์ฃผ ๋ฌป๋Š” ํ‚ค์›Œ๋“œ์ด๋ฏ€๋กœ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด์ž.

Ajax(Asynchronous Javascript and XML)๊ณผ ํƒ„์ƒ๋ฐฐ๊ฒฝ

ajax๋ž€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ๋™์ ์œผ๋กœ ์›นํŽ˜์ด์ง€๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์ด๋‹ค.

Ajax์ด์ „ ์›นํŽ˜์ด์ง€์˜ ๋ฌธ์ œ์ 

๊ธฐ์กด ์ •์ ์ธ ์›น์—์„œ๋Š” ํŽ˜์ด์ง€ ์ „ํ™˜์‹œ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๋™์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ, ์„œ๋ฒ„์—๊ฒŒ html์„ ์š”์ฒญํ•˜์—ฌ ๊ธฐ์กด์— ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋„ ๋‹ค์‹œ ์‘๋‹ต๋ฐ›์•˜๋‹ค.

๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ์ „ํ™˜์— ์žˆ์–ด ์ž‘์€ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ „์ฒด์ ์ธ ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ ์š”์ฒญ/์‘๋‹ต๋ฐ›์•„์™€์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ ์ธ ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค.

์ด๋กœ ์ธํ•ด ํ™”๋ฉด ์ „ํ™˜์ด ์ผ์–ด๋‚˜๋ฉด ํ™”๋ฉด์ด ์ˆœ๊ฐ„์ ์œผ๋กœ ๊นœ๋นก์ด๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.

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

์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋‰ด์Šค ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ณธ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

Ajax๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋‚ด๊ฐ€ ๋งŒ๋“ค์–ด๋†“์€ ํ‹€์•ˆ์—์„œ News API๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋งˆ๋‹ค ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ Ajax๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ url์— ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๊ธฐ ์œ„ํ•ด์„œ html์— ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๊ธฐ๋กœ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.

์ฆ‰, ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ html์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์ฃผ๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ html์— ์นดํ…Œ๊ณ ๋ฆฌ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•ด์ค˜์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํŽ˜์ด์ง€์ „ํ™˜์— ์žˆ์–ด์„œ ๊ฐ html์„ ์ƒˆ๋กœ ๋ฐ›์•„์™€ ํ™”๋ฉด์ด ๊นœ๋นก์ž„์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๊ณ  ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋ธ”๋กœํ‚น ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

Ajax ๋“ฑ์žฅ

ํ•˜์ง€๋งŒ ajax๋Š” ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ–ˆ๋‹ค.
์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์›นํŽ˜์ด์ง€์˜ ๋ณ€๊ฒฝ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ „์†ก๋ฐ›์•„ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„์€ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜์ง€ ์•Š๊ณ , ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„๋งŒ ํ•œ์ •์ ์œผ๋กœ ๋ Œ๋”๋งํ•˜๊ฒŒ ํ•ด์คฌ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ๋˜์–ด ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„์€ ๋ฆฌ๋ Œ๋”๋งํ•  ํ•„์š”๊ฐ€ ์—†์–ด์กŒ๋‹ค.
๊ทธ๋ ‡๊ฒŒ ๋จ์œผ๋กœ์จ ํ™”๋ฉด์ด ์ „ํ™˜๋  ๋•Œ ์ˆœ๊ฐ„์ ์œผ๋กœ ๊นœ๋นก์ด๋Š” ํ˜„์ƒ ๋˜ํ•œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

ajax ๋ฐฉ์‹์€ ๋‚ด๋น„๊ฒŒ์ด์…˜ ํด๋ฆญ ์ด๋ฒคํŠธ๋ฅผ ์บ์น˜ํ•˜๊ณ  preventDefault ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„๋กœ์˜ ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•œ๋‹ค. ์ดํ›„, href ์–ดํŠธ๋ฆฌ๋ทฐํŠธ์— path์„ ์‚ฌ์šฉํ•˜์—ฌ ajax ์š”์ฒญ์„ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋น„๋™๊ธฐ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜์—ฌ ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๋ธ”๋กœํ‚น๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

ajax์˜ ์ด๋Ÿฌํ•œ ์žฅ์ ๋“ค์€ ์ด์ „๊ณผ ๋‹ฌ๋ฆฌ ๋น ๋ฅธ ํผํฌ๋จผ์Šค์™€ ๋ถ€๋“œ๋Ÿฌ์šด ํ™”๋ฉด ์ „ํ™˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ๋‹ค.

Ajax์˜ ํŠน์ง•

  • ajax๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

  • ajax๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.
    XMLHttpRequest์€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ”„๋กœํผํ‹ฐ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  • ์ฃผ๋กœ json์ด๋ผ๋Š” ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ํฌ๋ฉง์œผ๋กœ ํ†ต์‹ ํ•œ๋‹ค.

Reference

0๊ฐœ์˜ ๋Œ“๊ธ€