AJAX - swkim0128/PARA GitHub Wiki


type: JavaScript archive: false

์†Œ๊ฐœ


Ajax(Asynchronous JavaScript and XML)๋Š” ์–ธ์–ด๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹Œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธ.

Ajax๋Š” ์›น์—์„œ ํ™”๋ฉด์„ ๊ฐฑ์‹ ํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์™€ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธ.

JavaScript์˜ XMLHttpRequest(XHR) ๊ฐ์ฒด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒ.

ํ™”๋ฉด ๊ฐฑ์‹ ์ด ์—†์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ๋™์ ์œผ๋กœ DOM์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ตฌํ˜„์ด ๋ณต์žก.

์ผ๋ฐ˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต.

  • data๋ฅผ ์ž…๋ ฅ ํ›„ event ๋ฐœ์ƒ.
  • Ajax๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์€ ์š”์ฒญ์€ ์„œ๋ฒ„์—์„œ data๋ฅผ ์ด์šฉํ•˜์—ฌ logic ์ฒ˜๋ฆฌ.
  • logic ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์‘๋‹ต page๋ฅผ ์ƒ์„ฑํ•˜๊ณ  client์— ์ „์†ก(ํ™”๋ฉด ์ „ํ™˜์ด ์ผ์–ด ๋‚จ)

Ajax ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต

  • data๋ฅผ ์ž…๋ ฅ ํ›„ event ๋ฐœ์ƒ
  • Ajax๋ฅผ ์ ์šฉํ•˜๋ฉด event ๋ฐœ์ƒ ์‹œ ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ Text, XML ๋˜๋Š” JSON์œผ๋กœ ์‘๋‹ต
  • client(Browser)์—์„œ๋Š” ์ด ์‘๋‹ต data๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™”๋ฉด ์ „ํ™˜์—†์ด ํ˜„์žฌ ํŽ˜์ด์ง€์—์„œ ๋™์ ์œผ๋กœ ํ™”๋ฉด์„ ์žฌ๊ตฌ์„ฑ.

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํ˜ธ์ž‘์šฉ.


์›น ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์€ ์„œ๋ฒ„ ์ค‘์‹ฌ์˜ ์ƒํ˜ธ ์ž‘์šฉ ๋ฐฉ์‹๊ณผ ํด๋ผ์ด์–ธํŠธ ์ค‘์‹ฌ์˜ ์ƒํ˜ธ์ž‘์šฉ ๋ฐฉ์‹œ์œผ๋กœ ๊ตฌ๋ถ„.

์„œ๋ฒ„ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์€ ํ™”๋ฉด ๊ตฌ์„ฑ์ด ์„œ๋ฒ„์—์„œ ์ด๋ฃจ์–ด ์ง„๋‹ค. (ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ์˜์—ญ์˜ JSP๋‚˜ PHP, ASP ๋“ฑ)

ํด๋ผ์ด์–ธํŠธ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹์€ ํด๋ผ์ด์–ธํŠธ(์›น ๋ธŒ๋ผ์šฐ์ €)์—์„œ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•œ๋‹ค.(์ฃผ๋กœ JavaScript)

Ajax๋Š” ํด๋ผ์ด์–ธํŠธ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์ด๋ฉฐ ๋น„๋™๊ธฐ ์š”์ฒญ๋ณด๋‹ค๋Š” ๋™์  ํ™”๋ฉด ๊ตฌ์„ฑ์ด ๊ด€๊ฑด์ž„.

!Untitled 56.png

JavaScript Ajax


XMLHttpRequest๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ Ajax ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด.

XMLHttpRequest ๊ฐ์ฒด๋Š” Ajax ํ†ต์‹  ์‹œ ์ „์†ก๋ฐฉ์‹, ๊ฒฝ๋กœ, ์„œ๋ฒ„๋กœ ์ „์†กํ•  data๋“ฑ ์ „์†ก์ •๋ณด๋ฅผ ๋‹ด๋Š” ์—ญํ• .

์‹ค์ œ ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์€ ๋ธŒ๋ผ์šฐ์ €์˜ Ajax์—”์ง„์—์„œ ์ˆ˜ํ–‰.

์ง์ ‘ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ Ajax๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ € ๋ณ„๋กœ ํ†ต์‹ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด ์ง„๋‹ค.

JavaScript AJAX ์ ์šฉ ์˜ˆ

!Untitled 1 34.png

!Untitled 2 33.png

jQuery AJAX ํ•จ์ˆ˜


$.ajax()

$.ajax() ํ•จ์ˆ˜๋Š” jQuery์—์„œ Ajax ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ•จ์ˆ˜.

๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค์— ๋น„ํ•˜์—ฌ ์˜ต์…˜์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ.

ํ•จ์ˆ˜์˜ ์˜ต์…˜์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ ์ž๋™์œผ๋กœ ์ง€์ •ํ•˜๋ฏ€๋กœ ์ƒ๋žต ๊ฐ€๋Šฅ.

!Untitled 3 32.png

Server์˜ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ

!Untitled 4 28.png

$.get(), $.post()

$.get(), $.post() ํ•จ์ˆ˜๋Š” $.ajax() ์˜ ์˜ต์…˜ ์†์„ฑ ์ค‘ type ์˜ต์…˜์ด ๋ฏธ๋ฆฌ ์ง€์ •๋œ ํ•จ์ˆ˜.

์ง€์ •๋œ HTTP Method๋กœ Ajax ํ†ต์‹ ์„ ํ•˜๋ฉฐ get()์€ GET ๋ฐฉ์‹์„, post()๋Š” POST ๋ฐฉ์‹์„ ์‚ฌ์šฉ.

$.xxx(url, function (result, textStatus, jqXHR){});

$.xxx(url, data, function (result, textStatus, jqXHR){});

!Untitled 5 25.png

  • GET ๋ฐฉ์‹๊ณผ POST๋ฐฉ์‹

GET ๋ฐฉ์‹์˜ ํŠน์ง•

  • URL์— ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)๋ฅผ ํฌํ•จ์‹œ์ผœ ์š”์ฒญํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ Header(ํ—ค๋”)์— ํฌํ•จํ•˜์—ฌ ์ „์†กํ•œ๋‹ค.
  • URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์–ด ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค.
  • ์ „์†กํ•˜๋Š” ๊ธธ์ด์— ์ œํ•œ์ด ์žˆ๋‹ค.
  • ์บ์‹ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

POST ๋ฐฉ์‹์˜ ํŠน์ง•

  • URL์— ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ Body์— ํฌํ•จ์‹œํ‚จ๋‹ค.
  • URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š์•„์„œ ๊ธฐ๋ณธ ๋ณด์•ˆ์€ ๋˜์–ด์žˆ๋‹ค.
  • ์ „์†กํ•˜๋Š” ๊ธธ์ด์— ์ œํ•œ์ด ์—†๋‹ค.
  • ์บ์‹ฑํ•  ์ˆ˜ ์—†๋‹ค.

$(selector).load().

$.load() ํ•จ์ˆ˜๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‚ด์šฉ์„ ์กฐํšŒํ•˜์—ฌ, ์„ ํƒ์ž๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰ํ•œ DOM ๊ฐ์ฒด์— ๋™์ ์œผ๋กœ ์‚ฝ์ž….

์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” ํ•„์ˆ˜ ๊ฐ’์œผ๋กœ HTML์„ ์กฐํšŒํ•  ์„œ๋ฒ„ URL์„ ์ง€์ •.

๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” ์š”์ฒญ ์‹œ ์„œ๋ฒ„์— ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •.

์„ธ ๋ฒˆ์งธ ์ธ์ž๋Š” ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ์™„๋ฃŒํ•œ ํ›„์— ์ˆ˜ํ–‰ํ•  ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ง€์ •.

!Untitled 6 22.png

๋ฐ์ดํ„ฐ ์ „์†ก ํ˜•์‹


server์™€ client๋Š” ์ฃผ๊ณ  ๋ฐ›์„ data์˜ ํ˜•์‹์„ ๋งž์ถฐ์•ผ ํ•จ.

๋Œ€ํ‘œ์ ์ธ dataํ˜•์‹์€ CSV, XML, JSON ๋“ฑ์ด ์žˆ์Œ.

  1. CSV(Comma Separated Values)

    ๊ฐ ํ•ญ๋ชฉ์„ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•.

    ๋‹ค๋ฅธ ๋‘ ํ˜•์‹์— ๋น„ํ•ด ๊ต‰์žฅํžˆ ์งง๋‹ค. ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ์œ ๋ฆฌ.

    ๋‹จ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ๋‚ด์šฉ์ธ์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. (์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์™„๋ฒฝํžˆ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ณต์œ ํ•  ๊ฒฝ์šฐ ๊ฐ€๋Šฅ)

    !Untitled 7 19.png

    !Untitled 8 17.png

  2. XML(eXtensible Markup Language)

    xml์€ tag๋กœ data๋ฅผ ํ‘œํ˜„ํ•จ.

    tag๋ฅผ ๋ณด๋ฉด ๊ฐ data๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ํŒŒ์•… ๊ฐ€๋Šฅ.

    tag์— ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ๋„ฃ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณต์žกํ•œ data ์ „๋‹ฌ ๊ฐ€๋Šฅ.

    !Untitled 9 16.png

    !Untitled 10 14.png

๋ฐ์ดํ„ฐ ์ „์†ก ํ˜•์‹


  1. JSON (JavaScript Object Notation).

    CSV์™€ XML์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•œ ํ˜•์‹

    JavaScript์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์˜ ํ˜•์‹์œผ๋กœ data๋ฅผ ํ‘œํ˜„.

    Ajax ์‚ฌ์šฉ์‹œ ๊ฑฐ์˜ ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” dataํ‘œํ˜„ ๋ฐฉ์‹.

    !Untitled 11 12.png

    !Untitled 12 11.png

Event ๊ด€๋ฆฌ(์ „์—ญํ•จ์ˆ˜)


Ajax๋Š” ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ๊ณผ์ •์ด ์›น ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋ถ€์—์„œ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ง„ํ–‰์ƒํ™ฉ์„ ์•Œ๊ธฐ ์–ด๋ ต๋‹ค.

Ajax ์ €์—ญํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Ajax ์ฒ˜๋ฆฌ ์ค‘์— ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

jQuery๋Š” Ajax ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฐ ๋‹จ๊ณ„ ๋ณ„๋กœ ์ „์—ญํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ.

๋‹จ, jQuery์˜ ์ „์—ญํ•จ์ˆ˜๋Š” $.ajaxSetup() ํ•จ์ˆ˜์— global ํ”„๋กœํผํ‹ฐ ์„ค์ •์ด true์ธ ๊ฒฝ์šฐ์—๋งŒ ์ˆ˜ํ–‰๋จ. (๋””ํดํŠธ : true)

!Untitled 13 11.png

  • ๋กœ๋”ฉ ํ™”๋ฉด ๊ตฌํ˜„

!Untitled 14 10.png

โš ๏ธ **GitHub.com Fallback** โš ๏ธ