Ajax1

Ajax (Asynchronous JavaScript and XML) ๋Š” ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜.

์„œ๋ฒ„๋ž€?

๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ ์š”์ฒญํ•˜๋ฉด ํ•ด๋‹น ์š”์ฒญ(Request)์— ๋Œ€ํ•œ ์‘๋‹ต(Response)๋ฅผ ๋ฐ˜ํ™˜

  1. ์›น๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ ์›น์„œ๋ฒ„์— 'www.naver.com' ์‚ฌ์ดํŠธ ๋ฐ์ดํ„ฐ ๋‹ฌ๋ผ๊ณ  ์š”์ฒญ

  2. ์›น์„œ๋ฒ„๋Š” ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ ํŒŒ์ผ์„ ์ฐพ์•„์„œ ์›น๋ธŒ๋ผ์šฐ์ €์— ๋ฐ˜ํ™˜

  3. ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ํŒŒ์ผ์„ ๋ฐ›์•„ ๋„ค์ด๋ฒ„ ๋ฉ”์ธํ™”๋ฉด์„ ํ‘œ์‹œ

GET / POST

GET ์š”์ฒญ์€ ์„œ๋ฒ„์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ 

POST ์š”์ฒญ์€ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•จ.

(์˜ˆ์‹œ. ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ DB์— ์ €์žฅํ•  ๋•Œ)

PUT, PATCH, DELETE ๋„ ์žˆ์ง€๋งŒ ์ง€๊ธˆ์€ GET / POST๋งŒ ์•Œ๊ณ  ๊ฐ‘์‹œ๋‹ค.

GET ์š”์ฒญ์˜ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ

www.youtube.com - ์ด URL์„ ์ฃผ์†Œ์ฐฝ์— ์ ์œผ๋ฉด ํ•ด๋‹น ์„œ๋ฒ„๋กœ GET ์š”์ฒญ์„ ๋‚ ๋ ค์คŒ.

POST ์š”์ฒญ์€ ๋ณดํ†ต html์˜ <form> ํƒœ๊ทธ์— ๋‹ด์•„์„œ ์š”์ฒญํ•จ.

์˜ˆ์‹œ. <form url="์š”์ฒญํ• url" method="post">

์ด๋Ÿฌํ•œ GET / POST ์š”์ฒญ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ ๋œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

Ajax

Ajax๋Š” ์›นํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ•˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ธฐ์ˆ 

jQuery๋กœ Ajax ์š”์ฒญํ•˜๊ธฐ

ํ•œ๊ตญ ์›นํˆฐ API๋ฅผ ์‚ฌ์šฉํ•ด์„œ Get ์š”์ฒญ์„ ์—ฐ์Šต ํ•ด๋ณด์ž.

$.get("์š”์ฒญํ•  url");   //get ์š”์ฒญ ๋ฐฉ๋ฒ•

 $.get('https://korea-webtoon-api.herokuapp.com/search?keyword=์ฟ ๋ฒ ๋ผ')
        .done(function (data){
            console.log(data);  //์š”์ฒญ์ด ์™„๋ฃŒ๋˜๋ฉด ๋™์ž‘ํ•  ์ฝ”๋“œ
        }).fail(function (error){
            console.log(error); //์š”์ฒญ์ด ์‹คํŒจํ–ˆ์„ ๋•Œ  ๋™์ž‘ํ•  ์ฝ”๋“œ 
        })always(function (){
            console.log("test"); //์„ฑ๊ณต ์‹คํŒจ์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ๋™์ž‘ํ•  ์ฝ”๋“œ 
        })

done / fail ๋ง๊ณ  then/ catch ์จ๋„ ๊ดœ์ฐฎ์Œ

์œ„์—์„œ ์š”์ฒญํ•œ webtoon API ๊ฒฐ๊ณผ console ์ถœ๋ ฅ

javascript ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ fetch

fetch('https://korea-webtoon-api.herokuapp.com/search?keyword=์ฟ ๋ฒ ๋ผ')
  .then(res => res.json())
  .then(function(data){
    console.log(data)
  })
  .catch(function(error){
    console.log('์‹คํŒจํ•จ')
  });

์ด๋ ‡๊ฒŒ ์š”์ฒญํ•ด๋„ ๊ฒฐ๊ณผ๋Š” ๋˜‘๊ฐ™๋‹ค.

์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์ด ๋” ํ•„์š”ํ•œ ์ด์œ ๋Š” ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ์—๋Š” ๋ฌธ์ž๋งŒ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

๊ทธ๋Ÿฐ๋ฐ Ajax๋กœ ์š”์ฒญํ–ˆ์„๋•Œ์—๋Š” object ํ˜•ํƒœ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐ›์•„์˜จ ๊ฑฐ์ž„?

>> jQuery์˜ $.get() JSON์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ array/object ํ˜•ํƒœ๋กœ ์ž๋ฃŒ๋ฅผ ๋ฐ”๊ฟ”์คŒ

๋‚ด์žฅํ•จ์ˆ˜ fetch๋Š” ๊ทธ๋Ÿฐ๊ฒŒ ์—†์–ด์„œ res๋ฅผ array/object๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด res => res.json() ์ด ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•จ.

post ๋ฐฉ์‹์€

$.post('url', {title : 'Blosson Dress', price : 70000});  

์ด๋Ÿฐ์‹์œผ๋กœ ๋ณด๋‚ผ url , ๋’ค์— data ์ ์œผ๋ฉด ๊ฐ€๋Šฅํ•จ.

post๋ฐฉ์‹๋„ .done .fail ๊ฐ€๋Šฅํ•จ.

โœจ ๊ณผ์ œ. js013.html ์— get ๋ฐฉ์‹์œผ๋กœ ์ข‹์•„ํ•˜๋Š” ์›นํˆฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ์ฒซ๋ฒˆ์งธ ์ƒํ’ˆ ์ด๋ฏธ์ง€์™€ ํƒ€์ดํ‹€์—

ํ•ด๋‹น ์ธ๋„ค์ผ๊ณผ ์›นํˆฐ ์ œ๋ชฉ์„ ๋„ฃ์–ด๋ณด์ž.

๐ŸŽˆHINT img src ๋ณ€๊ฒฝํ•˜๋Š” ๋ฒ•

$(img).attr("src", '์ด๋ฏธ์ง€url');

โœจ ๊ณผ์ œ. ์™„๋ฃŒํ•œ ์‚ฌ๋žŒ์€ ์›นํˆฐ ์ œ๋ชฉ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น url๋กœ ์ด๋™ํ•˜๊ฒŒ๋„ ํ•ด๋ณด์ž.

์ฝ”๋“œ ๋”ฐ๋ผ์น˜์ง€๋ง๊ณ  ๊ผญ ์™„๋ฃŒํ•˜๊ณ  ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

$.get('https://korea-webtoon-api.herokuapp.com/search?keyword=์ฟ ๋ฒ ๋ผ')
        .done(function (data){
            console.log(data);
            var webtoon = data.webtoons[0];
            console.log(webtoon);
            $('img').eq(0).attr("src", webtoon.img);
            $('.title').eq(0).html(webtoon.title);
           
            $('.title').on('click', function (){
                $(location).attr("href", webtoon.url);
            })
        }).fail(function (error){
            console.log(error);
        }).always(function (){
            console.log("test");
        })

Last updated