JavaScript

AJAX

SeaPlus 2021. 9. 18. 17:05


๐Ÿ”ฐ 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๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•˜๋Š” ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ์ง„ํ–‰ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. (์š”์ฒญ์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๋Š”๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋– ๋‚˜๊ฑฐ๋‚˜ ์˜ค์ž‘๋™ํ•  ์šฐ๋ ค๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.)

 

์ฐธ๊ณ