[JS + jquery] Ajax ๊ด€๋ จ ๋ฉ”์„œ๋“œ์™€ Ajax๋กœ JSON ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ, XML ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ

2021. 11. 2. 11:34ใ†HTML + CSS + JS/JS ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

728x90

 

1. Ajax ๊ด€๋ จ ๋ฉ”์„œ๋“œ 

Ajax๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™”๋ฉด ์ „ํ™˜ ์—†์ด ์„œ๋ฒ„์ธก์— ์ž๋ฃŒ xml, html, json ๋ฅผ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

 

- Ajax ๊ด€๋ จ ๋ฉ”์„œ๋“œ 

load()  : ์™ธ๋ถ€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

$.ajax() : ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— http post, get ๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, html, xml, json, ํ…์ŠคํŠธ ์œ ํ˜•์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ์ ์ธ ๋ฉ”์„œ๋“œ์ด๋‹ค. -> $.post() , $.get(), $.getJSON()์„ ํ•ฉ์ณ ๋†“์€ ๊ฒƒ์ด๋‹ค.

$.post() : ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— http post ๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•œ ํ›„ ์„œ๋ฒ„ ์ธก์˜ ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

$.get() : ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— http get๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•œ ํ›„ ์„œ๋ฒ„ ์ธก์˜ ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

$.getJSON() : ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— http get ๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•œ ํ›„ ์„œ๋ฒ„์ธก์˜ ์‘๋‹ต์„ json ํ˜•์‹์œผ๋กœ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

$.getScrit() : ajax๋ฅผ ์ด์šฉํ•˜์—ฌ ์™ธ๋ถ€ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. 

.ajaxStop(function() {..}) : ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์— ์‘๋‹ต ์š”์ฒญ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

.ajaxSucess(function() {..}) : ajax ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค. 

.ajaxComplete(function() {..}) : ajax ํ†ต์‹ ์ด ์™„๋ฃŒ๋˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค. 

 

 

1๏ธโƒฃ load() ๋ฉ”์„œ๋“œ 

load() ๋ฉ”์„œ๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ url ์ฃผ์†Œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ์™ธ๋ถ€ ์ฝ˜ํ…์ธ ๋ฅผ ์š”์ฒญํ•˜์—ฌ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

jquery_ajax_news.html์˜ ์•„์ด๋””๊ฐ€ news1์™€ news2 ๋ฅผ ๊ฐ€์ ธ์˜ด 

 

2๏ธโƒฃ $.ajax() ๋ฉ”์„œ๋“œ 

$.ajax() ๋ฉ”์„œ๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ url ๊ฒฝ๋กœ์— ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ์ž…๋ ฅํ•œ url ๊ฒฝ๋กœ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. 

 

$.ajax({

   url : "์ „์†ก ํŽ˜์ด์ง€",

   type : "์ „์†ก ๋ฐฉ์‹", 

   data : "์ „์†กํ•  ๋ฐ์ดํ„ฐ", 

   dataType : "์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹ (html, json, xml, text, jsonp)",

   success : function(data) {

     ์ „์†ก์— ์„ฑ๊ณตํ•˜๋ฉด ์‹คํ–‰ํ•  ์ฝ”๋“œ;

   },

   error : function(data) {

     ์ „์†ก์— ์‹คํŒจํ•˜๋ฉด ์‹คํ–‰ํ•  ์ฝ”๋“œ;

  }

});

 

 

- $.ajax() ๋ฉ”์„œ๋“œ์˜ ์˜ต์…˜ ์ข…๋ฅ˜

async : ํ†ต์‹ ์„ ๋™๊ธฐ, ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.  ๊ธฐ๋ณธ๊ฐ’ true (๋น„๋™๊ธฐ)

beforeSend  : ์š”์ฒญํ•˜๊ธฐ ์ „์— ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์ด๋‹ค.

cache : ์š”์ฒญํ•œ ํŽ˜์ด์ง€์—์„œ ์ธํ„ฐ๋„ท์— ์บ์‹œ๋ฅผ ์ €์žฅํ• ์ง€์˜ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ true

complete : Ajax๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์ด๋‹ค.  

contentType : ์„œ๋ฒ„๋กœ ์ „์†กํ•  ๋ฐ์ดํ„ฐ์˜ content type์„ ์„ค์ •ํ•œ๋‹ค.  

data : ์„œ๋ฒ„๋กœ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

dataType  : ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ฌ ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์„ ์ง€์ •ํ•œ๋‹ค. 

error : ํ†ต์‹ ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.  

success : Ajax๋กœ ํ†ต์‹ ์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ค„์ง€๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.  

timeout : ํ†ต์‹  ์‹œ๊ฐ„์„ ์ œํ•œํ•œ๋‹ค. ์‹œ๊ฐ„ ๋‹จ์œ„๋Š” ๋ฐ€๋ฆฌ์ดˆ์ด๋‹ค. 

type  : ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋ฐฉ์‹ get/post๋ฅผ ์„ค์ •ํ•œ๋‹ค. 

url  : ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ํŽ˜์ด์ง€๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ํ˜„์žฌ ํŽ˜์ด์ง€ 

username : http ์•ก์„ธ์Šค๋ฅผ ํ•  ๋•Œ ์ธ์ฆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ง€์ •ํ•œ๋‹ค. 

 

- Ajax ์ „์†ก ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฅ˜ 

serialize() : ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ์š”์†Œ์— ๊ฐ’์„ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ๋ฐฉ์‹์„ 'name=value1 & name2 = value2,..'์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ˜ํ™˜ $("form").serialize();

serializeArray() : ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ์š”์†Œ์— ๊ฐ’์„ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ๋ฐฉ์‹์„ '[{name1: value1}, {name2:value2}, ...'์™€ ๊ฐ™์€ ๋ฐฐ์—ด ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค. $("form").serializeArray();

$.param() : {name1 : value1 & name2 : valu2 ..} ์™€ ๊ฐ™์ด ์ž‘์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๊ณตํ•ด 'name1=value1  & name2=value2'์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. $.param(Object);

JSON.parse() : ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์ž‘์„œํ•œ ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๊ฐ€๊ณตํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. JSON.parse('{"name":"value"}');

JSON.stringify() : ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋กœ ๊ฐ€๊ณตํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. JSON.stringify({"name1":"value1" , "name2":"value2"});

 

2. Ajax๋กœ JSON๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ 

๋น„๋™๊ธฐ ํ†ต์‹  ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ HTML ๋ฌธ๋‹จ ํƒœ๊ทธ์— ๊ฒฐํ•ฉํ•˜๋Š”๊ฒƒ์„ ๋ฐ”์ธ๋”ฉ์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

โ— JSON(JavaScript Object Notation) 

json์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ํ˜•์‹์ด๋‹ค. json์€ ์†์„ฑ๊ณผ ๊ฐ’์œผ๋กœ ํ•˜๋‚˜์˜ ์Œ์„ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค. 

{"์†์„ฑ1" : "๊ฐ’1", "์†์„ฑ2" : "๊ฐ’2"}

์˜ˆ์ œ์˜ json ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค. 

์ด๋Š” 

https://mockaroo.com/

 

Mockaroo - Random Data Generator and API Mocking Tool | JSON / CSV / SQL / Excel

Mock your back-end API and start coding your UI today. It's hard to put together a meaningful UI prototype without making real requests to an API. By making real requests, you'll uncover problems with application flow, timing, and API design early, improvi

mockaroo.com

์—ฌ๊ธฐ์„œ json, xml ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค. 

์—ฌ๊ธฐ์˜ data์—๋Š” json ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐธ์กฐ๋œ๋‹ค. 

ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค. 

 

 

3. Ajax๋กœ XML ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ 

โ— XML(eXtensible Markup Language) ํ™•์žฅ์„ฑ ๋งˆํฌ์—… ์–ธ์–ด 

xml์€ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์–ธ์–ด์ด๋ฏ€๋กœ ํƒœ๊ทธ๋ช…์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ฆ‰ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ€๊ณตํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— xml์€ ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐํฌํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. 

 

์œ„์˜ ์‚ฌ์ดํŠธ์—์„œ xml ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋ฐ›์•˜๋‹ค. 

$.each() ๋ฉ”์„œ๋“œ๋Š” ์ œ์ด์ฟผ๋ฆฌ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋กœ 

์„ ํƒ์ž๋กœ ์„ ํƒํ•œ ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋œ๋‹ค. 

๋ฐฐ์—ด์— ์ €์žฅ๋œ ์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์„ ํƒํ•˜๋ฉด์„œ ์ธ๋ฑ์Šค ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. 

https://hyejin.tistory.com/198?category=1019892 

 

[JS + jquery] ์ œ์ด์ฟผ๋ฆฌ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ

1. ์ œ์ด์ฟผ๋ฆฌ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ 1๏ธโƒฃ each()/ $.each() ๋ฉ”์„œ๋“œ ์„ ํƒ์ž๋กœ ์„ ํƒํ•œ ์š”์†Œ(๋ฌธ์„œ ๊ฐ์ฒด)๋Š” ๋ฐฐ์—ด์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋œ๋‹ค. ์ด๋•Œ each()์™€ $.each() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์— ์ €์žฅ๋œ ์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์„ ํƒํ•˜

hyejin.tistory.com

 

 

 

 

 

 

 

 

728x90