Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

ย 

History

History
87 lines (66 loc) ยท 4.42 KB

File metadata and controls

87 lines (66 loc) ยท 4.42 KB

๐Ÿ’ป Ajax


๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Ajax

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

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Ajax์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

  • ๊ธฐ๋ณธ์ ์œผ๋กœ HTTP ํ”„๋กœํ† ์ฝœ์€ ํด๋ผ์ด์–ธํŠธ์ชฝ์—์„œ req๋ฅผ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ res๋ฅผ ๋ฐ›์œผ๋ฉด ์ด์–ด์กŒ๋˜ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๊ฒŒ ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ™”๋ฉด์˜ ๋‚ด์šฉ์„ ๊ฐฑ์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์‹œ req๋ฅผ ๋ณด๋‚ด๊ณ  res๋ฅผ ๋ฐ›์œผ๋ฉด์„œ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๊ฐฑ์‹  ํ•œ๋‹ค.
  • ์ด๋Ÿด ๊ฒฝ์šฐ, ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ ๊ฐฑ์‹ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•ผํ•˜๋Š”๋ฐ, ์—„์ฒญ๋‚œ ์ž์› ๋‚ญ๋น„์™€ ์‹œ๊ฐ„ ๋‚ญ๋น„๋ฅผ ์ดˆ๋ž˜ํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ Ajax๋Š” html ํŽ˜์ด์ง€ ์ „์ฒด๊ฐ€์•„๋‹Œ ์ผ๋ถ€๋ถ„๋งŒ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก XMLHttpRequest๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— request๋ฅผ ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ JSON์ด๋‚˜ XML ํ˜•ํƒœ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›์•„ ๊ฐฑ์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋งŒํผ์˜ ์ž์›๊ณผ ์‹œ๊ฐ„์„ ์•„๋‚„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Ajax ์žฅ, ๋‹จ์ 

๐Ÿƒ ์žฅ์ 

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

๐Ÿƒ ๋‹จ์ 

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

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Ajax ๋™์ž‘ ๋ฐฉ์‹

ajax๋™์ž‘๋ฐฉ์‹


  1. ์‚ฌ์šฉ์ž์— ์˜ํ•œ ์š”์ฒญ ์ด๋ฒคํŠธ ๋ฐœ์ƒ
  2. ์š”์ฒญ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“œ๋Ÿฌ์— ์˜ํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ˜ธ์ถœ
  3. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋ƒ„. ์ด๋•Œ, ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋‚˜์„œ, ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์ด ๋‹ค๋ฅธ ์ž‘์—…์„ ์ฒ˜๋ฆฌ(๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ)
  4. ์„œ๋ฒ„๋Š” ์ „๋‹ฌ๋ฐ›์€ XMLHttpRequest ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  Ajax ์š”์ฒญ์„ ์ฒ˜๋ฆฌ
  5. ์™€ 6. ์„œ๋ฒ„๋Š” ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ HTML, XML ๋˜๋Š” JSON ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌ.
  6. ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์›น ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ์„ ๊ฐฑ์‹ ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœ
  7. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์›น ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ์ด ๋‹ค์‹œ ๋กœ๋”ฉ๋˜์–ด ํ‘œ์‹œ๋œ๋‹ค.

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Ajax ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

๐Ÿƒ XMLHttpRequest

  • ์ผ๋ฐ˜์ ์œผ๋กœ XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ธ์Šคํ„ด์Šค์˜ open(), send() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค.
  let ourRequest = new XMLHttpRequest();

  ourRequest.open(
    "GET",
    "https://learnwebcode.github.io/json-example/animals-1.json"
  );

  ourRequest.onload = () => {
    let ourData = JSON.parse(ourRequest.responseText);
    console.log(ourData[0]);
  };

  ourRequest.send();

๐Ÿƒ Fetch

  • ES6๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋„์ž… ๋œ fetch๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์š”์ฒญ์„ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. IE๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ ๋Š” XMLHttpRequest๋ณด๋‹ค ํ›จ์”ฌ ์ง๊ด€์ ์ด๋‹ค.
  • ES6์—์„œ ํ‘œ์ค€์ด ๋˜์—ˆ๊ณ , Promise๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  • ์‘๋‹ต ๊ฐ์ฒด๋Š” json(), blob()๊ณผ ๊ฐ™์€ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ๋กœ body๋ฅผ ์ถ”์ถœํ•ด๋‚ด๊ณ  ์ด๋Š” ๋‹ค์‹œ Promise๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  fetch("https://learnwebcode.github.io/json-example/animals-1.json")
    .then(res => res.json())
    .then(resJson => console.log(resJson));

์ฐธ๊ณ 

https://github.com/baeharam/Must-Know-About-Frontend/blob/master/Notes/javascript/ajax.md
http://tcpschool.com/ajax/ajax_intro_works
https://coding-factory.tistory.com/143