๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

WEB

[ WEB ] AJAX์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ.

 

 

AJAX๋ž€ ๋ฌด์—‡์ผ๊นŒ?

 

 

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

 

๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” Web API์ธ XMLHttpRequest(HTTP๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ œ๊ณต) ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

 

 

 

 

์ถœ์ฒ˜ - https://ko.wikipedia.org/wiki/Ajax

 

์œ„์˜ ๊ทธ๋ฆผ์€ ์ „ํ†ต์ ์ธ ์›นํŽ˜์ด์ง€์˜ ์ƒ๋ช… ์ฃผ๊ธฐ(์™ผ์ชฝ)์™€ Ajax(์˜ค๋ฅธ์ชฝ)์˜ ๋น„๊ต ์ด๋ฏธ์ง€์ด๋‹ค.

 

 

 

 

์ „ํ†ต์ ์ธ ์›นํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ(์™ผ์ชฝ ์ด๋ฏธ์ง€)

 

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

 

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

 

 

 

 

 

AJAX ์›นํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ(์˜ค๋ฅธ์ชฝ ์ด๋ฏธ์ง€)

 

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

 

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

 

 

 

 

 


 

 

 

 

 

 

HTTP Requerst ์˜ˆ์ œ

 

ํ•ด๋‹น ์˜ˆ์ œ๋Š” mdn์—์„œ ๊ฐ€์ ธ์˜จ ์˜ˆ์ œ๋กœ, vanilla.js๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค.

 

<button id="ajaxButton" type="button">Make a request</button>

<script>
(function() {
  var httpRequest;
  document.getElementById("ajaxButton").addEventListener('click', makeRequest);

  function makeRequest() {
    httpRequest = new XMLHttpRequest();

    if(!httpRequest) {
      alert('XMLHTTP ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์—†์–ด์š” ใ… ใ… ');
      return false;
    }
    httpRequest.onreadystatechange = alertContents;
    httpRequest.open('GET', 'test.html');
    httpRequest.send();
  }

  function alertContents() {
    if (httpRequest.readyState === XMLHttpRequest.DONE) {
      if (httpRequest.status === 200) {
        alert(httpRequest.responseText);
      } else {
        alert('request์— ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”.');
      }
    }
  }
})();
</script>

 

  1. ์‚ฌ์šฉ์ž๋Š” ๋ธŒ๋ผ์šฐ์ € ์ƒ์˜ <Make a request>๋ผ๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.
  2. ๋ฒ„ํŠผ์˜ ํด๋ฆญ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” makeRequest() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  3. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , onreadystatechange ์— ์„ค์ •๋œ alertContents() ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  4. alertContents() ํ•จ์ˆ˜๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์•˜๋Š”์ง€์™€ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ ์‘๋‹ต์ธ์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ, ์ •์ƒ์ ์ธ ๊ฒฝ์šฐ test.html ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ alertI() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

 

 

 

 

 

 

 


 

๐ŸŒธ ์ถœ์ฒ˜ ๐ŸŒธ

 

AJAX - MDN

Ajax - ์œ„ํ‚ค๋ฐฑ๊ณผ