Yuni Devlog
article thumbnail

๐ŸŒ™AJAX

HTML, CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, DOM, XML ๋“ฑ ๊ธฐ์กด์— ์‚ฌ์šฉ๋˜๋˜ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์ด๋‹ค.

 

๋น„๋™๊ธฐ์‹ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ XML(Asynchronous Javascript And XML)์˜ ์•ฝ์ž
๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์˜ ํ•˜๋‚˜

*๋™๊ธฐ์‹ => async : false - ์ƒ๋Œ€๋ฐฉ DATA๊ฐ€ ๋‚ ๋ผ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ
*๋น„๋™๊ธฐ์‹ => async : true - ๋‚ ๋ผ์˜ค๋Š” DATA ์‹ ๊ฒฝ์•ˆ์“ฐ๊ณ  ํ•  ์ผ ํ•˜๋Š” ๊ฒƒ

 

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

๐ŸŒ™๋™์ž‘ ์›๋ฆฌ

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

๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž์˜ ๋™์ž‘์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ง€์†ํ•ด์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

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

๐ŸŒ™XMLHttpRequest ๊ฐ์ฒด

Ajax์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ!

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๊ณ„์†ํ•ด์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฐ”๋กœ ์ด ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐ŸŒ™jQuery๋ฅผ ์ด์šฉํ•œ Ajax

jQuery๋ฅผ ์ด์šฉํ•˜์—ฌ Ajax๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋งŽ์€ ์†Œ์Šค ๋Œ€์‹  ๋ช‡ ์ค„์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ Server์™€ Data๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

jQuery์—์„œ ์ œ๊ณตํ•˜๋Š” $.ajax([settings]) ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

$.ajax ({
  // URL์€ ํ•„์ˆ˜ ์š”์†Œ์ด๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” Property์ž…๋‹ˆ๋‹ค.
  url    : "url", // ์š”์ฒญ์ด ์ „์†ก๋  URL ์ฃผ์†Œ
  type    : "GET", // http ์š”์ฒญ ๋ฐฉ์‹ (default: ‘GET’)
  async : true,  // ์š”์ฒญ ์‹œ ๋™๊ธฐํ™” ์—ฌ๋ถ€. ๊ธฐ๋ณธ์€ ๋น„๋™๊ธฐ(asynchronous) ์š”์ฒญ (default: true)
  cache : true,  // ์บ์‹œ ์—ฌ๋ถ€
  timeout : 3000, // ์š”์ฒญ ์ œํ•œ ์‹œ๊ฐ„ ์•ˆ์— ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ์š”์ฒญ์„ ์ทจ์†Œํ•˜๊ฑฐ๋‚˜ error ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœ.(๋‹จ์œ„: ms)
  data  : {key : value}, // ์š”์ฒญ ์‹œ ํฌํ•จ๋˜์–ด์งˆ ๋ฐ์ดํ„ฐ
  processData : true, // ๋ฐ์ดํ„ฐ๋ฅผ ์ปจํ…ํŠธ ํƒ€์ž…์— ๋งž๊ฒŒ ๋ณ€ํ™˜ ์—ฌ๋ถ€
  contentType : "application/json", // ์š”์ฒญ ์ปจํ…ํŠธ ํƒ€์ž… 
  dataType    : "json", // ์‘๋‹ต ๋ฐ์ดํ„ฐ ํ˜•์‹ (๋ช…์‹œํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์ถ”์ธก)
  beforeSend  : function () {
    // XHR Header๋ฅผ ํฌํ•จํ•ด์„œ HTTP Request๋ฅผ ํ•˜๊ธฐ์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  },
  success : function(data, status, xhr) {
    // ์ •์ƒ์ ์œผ๋กœ ์‘๋‹ต ๋ฐ›์•˜์„ ๊ฒฝ์šฐ์—๋Š” success ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    // ์ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ๋Š” ์‘๋‹ต ๋ฐ”๋””, ์‘๋‹ต ์ฝ”๋“œ ๊ทธ๋ฆฌ๊ณ  XHR ํ—ค๋”๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  },
  error    : function(xhr, status, error) {
        // ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ•˜์˜€๋‹ค๊ฑฐ๋‚˜ ์ •์ƒ์ ์ธ ์‘๋‹ต์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ํ™•์ธํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 
        // error ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
        // ์˜ˆ๋ฅผ ๋“ค์–ด, dataType์„ ์ง€์ •ํ•ด์„œ ์‘๋‹ต ๋ฐ›์„ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ง€์ •ํ•˜์˜€์ง€๋งŒ,
        // ์„œ๋ฒ„์—์„œ๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํ˜•์‹์œผ๋กœ ์‘๋‹ตํ•˜๋ฉด  error ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  },
  complete : function(xhr, status) {
    // success์™€ error ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋œ ํ›„์— ๋ฐ˜๋“œ์‹œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    // try - catch - finally์˜ finally ๊ตฌ๋ฌธ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  }
});

 

์ฐธ์กฐ

http://www.tcpschool.com/ajax/ajax_intro_basic

https://devyj.tistory.com/1

'JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JavaScript]JSON(JavaScript Object Notation)์ด๋ž€?  (1) 2022.08.31
[JavaScript]jQuery๊ฐ์ฒด  (2) 2022.08.29
profile

Yuni Devlog

@siyuning

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!

๊ฒ€์ƒ‰ ํƒœ๊ทธ