Ajax

kirin.logยท2021๋…„ 9์›” 6์ผ
0
post-custom-banner

๐Ÿบ Ajax (Asynchronous JavaScript and XML)

  • Ajax๋Š” ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์˜ ํ•˜๋‚˜.
  • javascript๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€ ๋น„๋™๊ธฐ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•˜๋ฉฐ, ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜์ง€ ์•Š๊ณ ๋„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์›น ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋กœ๋”ฉ(์ „ํ†ต์  ์›น์•ฑ ๋ชจ๋ธ)ํ•˜์ง€ ์•Š๊ณ ๋„, ์›น ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ์„ ๊ฐฑ์‹ (Ajax๋ฅผ ์‚ฌ์šฉํ•œ ์›น์•ฑ)ํ•  ์ˆ˜ ์žˆ๋‹ค.
    (์ฆ‰ Ajax๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์˜์—ญ์—์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์›น ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„์—๋งŒ ํ‘œ์‹œ)
  • ์„œ๋ฒ„์™€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
    • JSON
    • XML
    • HTML
    • ํ…์ŠคํŠธ ํŒŒ์ผ ๋“ฑ

๐Ÿ‘‰ AJAX์˜ ๊ฐ•๋ ฅํ•œ ํŠน์ง•์€ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์žฌ๋กœ๋”ฉ ํ•˜์ง€ ์•Š๊ณ ์„œ๋„ ์ˆ˜ํ–‰ ๋˜๋Š” "๋น„๋™๊ธฐ์„ฑ"์ด๋‹ค.
์ด๋Ÿฌํ•œ ๋น„๋™๊ธฐ์„ฑ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ Event๊ฐ€ ์žˆ์œผ๋ฉด ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ ์ผ๋ถ€๋ถ„๋งŒ์„ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

๐Ÿ‘‰ AJAX์˜ ์ฃผ์š” ๋‘๊ฐ€์ง€ ํŠน์ง•์€ ์•„๋ž˜์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
1) ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ์„œ๋ฒ„์— ์š”์ฒญ
2) ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ์ž‘์—…์„ ์ˆ˜ํ–‰

๐Ÿ‘‰ Ajax์˜ X๋Š” XML์„ ์˜๋ฏธํ•˜์ง€๋งŒ, JSON ์€ JavaScript์˜ ์ผ๋ถ€๊ฐ€ ๋˜์–ด ํฌ๊ธฐ๊ฐ€ ๋” ๊ฐ€๋ฒผ์›Œ์ง€๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋งŽ์€ ์ด์  ๋•Œ๋ฌธ์— ์˜ค๋Š˜๋‚  XML๋ณด๋‹ค ์„ ํ˜ธ๋œ๋‹ค. JSON๊ณผ XML์€ ๋ชจ๋‘ Ajax ๋ชจ๋ธ์—์„œ ์ •๋ณด๋ฅผ ํŒจํ‚ค์ง•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.


๐Ÿง ๊ธฐ์กด ๊ธฐ์ˆ ๊ณผ์˜ ์ฐจ์ด์ 

โ›ฑ ์ „ํ†ต์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋ธ vx Ajax๋ฅผ ์‚ฌ์šฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋น„๊ต

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

๋ฐ˜๋ฉด Ajax ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์›น์„œ๋ฒ„์— ์š”์ฒญํ•ด์„œ ๋ฐ›์€ ํ›„ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณดํ†ต XML ๊ธฐ๋ฐ˜์˜ ์›น ์„œ๋น„์Šค ํ”„๋กœํ† ์ฝœ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์›น ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ด๋‹ค.
์›น ์„œ๋ฒ„์—์„œ ์ „์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ์ผ๋ถ€๋ถ„์ด ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ ์ฒ˜๋ฆฌ ๋˜๋ฏ€๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ์‚ฌ์ด์— ๊ตํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ๋Ÿ‰๊ณผ ์›น์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Ÿ‰๋„ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‘๋‹ต์„ฑ์ด ์ข‹์•„์ง„๋‹ค. ๋˜ํ•œ ์›น์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€ํ•˜๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ์ผ์ด ์š”์ฒญ์„ ์ฃผ๋Š” ์ˆ˜๋งŽ์€ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•ด์„œ ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด์ ์ธ ์›น ์„œ๋ฒ„ ์ฒ˜๋ฆฌ๋Ÿ‰๋„ ์ค„์–ด๋“ค๊ฒŒ ๋œ๋‹ค.


๐Ÿง Ajax ์‚ฌ์šฉ ์žฅ.๋‹จ์ 

์žฅ์ 

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

๋‹จ์ 

  • Ajax๋ฅผ ์“ธ ์ˆ˜ ์—†๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
  • HTTP ํด๋ผ์ด์–ธํŠธ์˜ ๊ธฐ๋Šฅ์ด ํ•œ์ •๋˜์–ด ์žˆ๋‹ค.
  • ํŽ˜์ด์ง€ ์ด๋™์—†๋Š” ํ†ต์‹ ์œผ๋กœ ์ธํ•œ ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ.
  • ํด๋ผ์ด์–ธํŠธ์˜ PC๋กœ Ajax ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜๋Š” ์—†๋‹ค.
  • ์ง€์›ํ•˜๋Š” Charset์ด ํ•œ์ •๋˜์–ด ์žˆ๋‹ค.
  • ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋˜๋ฏ€๋กœ ๋””๋ฒ„๊น…์ด ์šฉ์ดํ•˜์ง€ ์•Š๋‹ค.
  • ์š”์ฒญ์„ ๋‚จ๋ฐœํ•˜๋ฉด ์—ญ์œผ๋กœ ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ๋Š˜ ์ˆ˜ ์žˆ๋‹ค.
  • Ajax ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋œ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ Ajax ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜๋Š” ์—†๋‹ค.
  • Ajax๋กœ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.
  • ๋™์ผ-์ถœ์ฒ˜ ์ •์ฑ…์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ๊ณผ๋Š” ํ†ต์‹ ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (โ—๏ธโ—๏ธ CORS)
  • Ajax๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ํ’€๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์„œ๋ฒ„ ํ‘ธ์‹œ ๋ฐฉ์‹์˜ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค๋Š” ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.

โ— ํด๋ผ์ด์–ธํŠธ ํ’€๋ง(client pooling) ๋ฐฉ์‹์ด๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•˜์—ฌ ์–ป๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค.
์ด์— ๋ฐ˜ํ•ด ์„œ๋ฒ„ ํ‘ธ์‹œ(server push) ๋ฐฉ์‹์ด๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„ ์„œ๋ฒ„๊ฐ€ ์•Œ์•„์„œ ์ž๋™์œผ๋กœ ํŠน์ • ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
์Šค๋งˆํŠธ ํฐ์—์„œ ๊ฐ์ข… ์•ฑ์ด ๋ณด๋‚ด๋Š” ํ‘ธ์‹œ ์•Œ๋ฆผ์ด ์„œ๋ฒ„ ํ‘ธ์‹œ ๋ฐฉ์‹์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋‹ค.


๐Ÿง ์ž‘๋™ ๋ฐฉ์‹

  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • AJAX๋ผ๋Š” ๋„คํŠธ์›Œํฌ ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ(request)ํ•˜๊ณ  ๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค(response).

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

ํŽ˜์ด์ง€ ๋ฆฌ๋กœ๋“œ์˜ ๊ฒฝ์šฐ, ์ „์ฒด ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์™€์•ผํ•˜๋Š”๋ฐ ์ด๋ฏธ์ง€, ์Šคํฌ๋ฆฝํŠธ , ๊ธฐํƒ€ ์ฝ”๋“œ๋“ฑ์„ ๋ชจ๋‘ ์žฌ์š”์ฒญํ•  ๊ฒฝ์šฐ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์ง€๋งŒ ๋น„๋™๊ธฐ์‹ ๋ฐฉ์‹์„ ์ด์šฉํ•  ๊ฒฝ์šฐ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋งค์šฐ ํฐ ์žฅ์ ์ด ์žˆ๋‹ค.

โ›ฑ AJAX์˜ ์ง„ํ–‰๊ณผ์ •
(1) XMLHttpRequest Object๋ฅผ ๋งŒ๋“ค๊ธฐ.

  • request๋ฅผ ๋ณด๋‚ผ ์ค€๋น„๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์‹œํ‚ค๋Š” ๊ณผ์ •
  • ์ด๊ฒƒ์„ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ method๋ฅผ ๊ฐ–์ถ˜ object๊ฐ€ ํ•„์š”ํ•จ

(2) callback ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ.

  • ์„œ๋ฒ„์—์„œ response๊ฐ€ ์™”์„ ๋•Œ ์‹คํ–‰์‹œํ‚ค๋Š” ํ•จ์ˆ˜
  • HTML ํŽ˜์ด์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•จ

(3) Open a request

  • ์„œ๋ฒ„์—์„œ response๊ฐ€ ์™”์„ ๋•Œ ์‹คํ–‰์‹œํ‚ค๋Š” ํ•จ์ˆ˜
  • HTML ํŽ˜์ด์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•จ

(4) send the request


โ›ฑ AJAX๊ฐ€ ์“ฐ์ด๋Š” ๋ฐฉ๋ฒ•
XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์–ป์€ ๋’ค, url์„ ํ†ตํ•ด ์š”์ฒญ(request)ํ•˜๊ณ  ์‘๋‹ต(response)์„ ๋ฐ›์œผ๋ฉด ์‘๋‹ต ๊ฒฐ๊ณผ์— ๋งž๋Š” ํ•จ์ˆ˜(callbackํ•จ์ˆ˜)๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค.
์˜ˆ์ „์—๋Š” XMLHttpRequest API๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ, ๋ถˆํŽธํ•จ์„ ๋Š๋‚€ ์‚ฌ์šฉ์ž๋“ค์ด JQuery๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ๊ทธ ์ดํ›„ fetch API๊ฐ€ ES6(ES2015) ํ‘œ์ค€์œผ๋กœ ๋“ฑ์žฅํ•˜๋ฉด์„œ fetch API๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ด ๋˜์—ˆ๋‹ค.

// โ™ฃ๏ธ ๊ธฐ๋ณธ์ ์ธ fetch๊ตฌ์กฐ

fetch(resource, init)  // resource: URL ๊ฒฝ๋กœ, ์š”์ฒญ ์ฃผ์†Œ / init: ์„ค์ • ๊ฐ์ฒด
    .then( callback )
    .catch( callback )
// resource: URL ๊ฒฝ๋กœ, ์š”์ฒญ ์ฃผ์†Œ


// โ™ฃ๏ธ init ๊ฐ์ฒด ์ž‘์„ฑ ์˜ˆ
const init = {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json',
    },
    credentials: 'same-origin',
  };


// โ™ฃ๏ธ fetch ์˜ˆ์‹œ
const url = 'https://youtube.com/todos/';
const init = {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json',
    },
    credentials: 'same-origin',
  };

fetch(url, init)
    .then(res => {
        if(res.status === 200){
            return res.json()
        }
        else{
            console.error(`HTTP error! status: ${res.status}`)
        }
    })
    .then(jsonData => {
        console.log(jsonData)
    })
    .catch(err => {
        console.log(err)
    })  
profile
boma91@gmail.com
post-custom-banner

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