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

๐Ÿ“ฐ ์–ธ์–ด/JS

Ajax

์ฑ… <๋Ÿฌ๋‹์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ>๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐฐ์šด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

๋ชฉ์ฐจ

  • 1. Ajax(Asynchronous JavaScript and XML)
  • 2. JSON (JavaScript Object Notation)
  • 3. XMLHttpRequest

 

<Ajax>

1. Ajax(Asynchronous JavaScript and XML)

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

 

 

2. JSON (JavaScript Object Notation)( ์ฐธ๊ณ  ์‚ฌ์ดํŠธ : http://www.json.org/json-ko.html)

  • JSON์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•œ ๊ทœ์น™ ์ฆ‰ ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ๋งํ•œ๋‹ค.
  • ์„œ๋ฒ„๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ๋ณดํ†ต JSONํ˜•์‹์œผ๋กœ ๋ณด๋‚ธ๋‹ค. 
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๊ณผ ๋งค์šฐ ํก์‚ฌํ•˜์ง€๋งŒ JSON์€ ์ˆœ์ˆ˜ํ•œ ํ…์ŠคํŠธ๋กœ ๊ตฌ์„ฑ๋œ ๊ทœ์น™์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค.
{ 
    "name": "Lee", 
    "gender": "male", 
    "age": 20, 
    "alive": true 
}

#ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ(์ž‘์€๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ๋ถˆ๊ฐ€)๋กœ ๋‘˜๋Ÿฌ์‹ธ์•ผ ํ•œ๋‹ค.

 

 

3. XMLHttpRequest ( ์ฐธ๊ณ  ์‚ฌ์ดํŠธ : https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)

  • ๋ธŒ๋ผ์šฐ์ €๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ Ajax ์š”์ฒญ์„ ์ƒ์„ฑํ•˜๊ณ  ์ „์†กํ•œ๋‹ค. 
  • ์„œ๋ฒ„๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๊ฐ™์€ XMLHttpRequest ๊ฐ์ฒด๊ฐ€ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋‹ค์Œ์€ Ajax ์š”์ฒญ ์ฒ˜๋ฆฌ์˜ ์˜ˆ์ด๋‹ค.
// XMLHttpRequest ๊ฐ์ฒด์˜ ์ƒ์„ฑ 
const xhr = new XMLHttpRequest(); 

// ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ Request๋ฅผ ์˜คํ”ˆํ•œ๋‹ค 
xhr.open('GET', '/users'); 

// Request๋ฅผ ์ „์†กํ•œ๋‹ค 
xhr.send();
  • ๋‹ค์Œ์€ Ajax ์‘๋‹ต ์ฒ˜๋ฆฌ์˜ ์˜ˆ์ด๋‹ค.
// XMLHttpRequest ๊ฐ์ฒด์˜ ์ƒ์„ฑ 
const xhr = new XMLHttpRequest(); 

// XMLHttpRequest.readyState ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ณ€๊ฒฝ(์ด๋ฒคํŠธ ๋ฐœ์ƒ)๋  ๋•Œ๋งˆ๋‹ค onreadystatechange ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. 
xhr.onreadystatechange = function (e) { 
// readyStates๋Š” XMLHttpRequest์˜ ์ƒํƒœ(state)๋ฅผ ๋ฐ˜ํ™˜ 
// readyState: 4 => DONE(์„œ๋ฒ„ ์‘๋‹ต ์™„๋ฃŒ) 
    if (xhr.readyState !== XMLHttpRequest.DONE) return; 

// status๋Š” response ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ : 200 => ์ •์ƒ ์‘๋‹ต 
    if(xhr.status === 200) { 
        console.log(xhr.responseText); 
        } else { 
            console.log('Error!'); 
        } 
    };