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


- ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ํ•  ๋•Œ์—๋Š” XMLHttpRequest๊ฐ์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” open(), send() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


์˜ˆ๋ฅผ๋“ค์–ด, ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


var xhttp = new XMLHttpRequest();

xhttp.open("GET", "URL", true);

xhttp.send();


์ด๋Ÿฐ ์‹์œผ๋กœ ๋ง์ด์ฃ .


์ด๋•Œ open()๊ณผ send()์˜ ๋ฉ”์†Œ๋“œ ์„ค๋ช…์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฉ”์†Œ๋“œ์„ค๋ช…
open(method, url, async)์š”์ฒญ ํƒ€์ž…์„ ์ •ํ•ฉ๋‹ˆ๋‹ค.

method: ์š”์ฒญ ํƒ€์ž…: GET ๋˜๋Š” POST
url: ์„œ๋ฒ„ (ํŒŒ์ผ) ์œ„์น˜
async: true (๋น„๋™๊ธฐ์‹) ๋˜๋Š” false (๋™๊ธฐ์‹)
send()์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค (GET๋ฐฉ์‹์—์„œ ์‚ฌ์šฉ)
send(string)์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค (POST๋ฐฉ์‹์—์„œ ์‚ฌ์šฉ)


GET ๋ฐฉ์‹๊ณผ POST๋ฐฉ์‹


GET ์€ POST๋ณด๋‹ค ๋‹จ์ˆœํ•˜๊ณ  ๋น ๋ฅด๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•„๋ž˜ ๊ฒฝ์šฐ์—๋Š” ๊ผญ POST๋ฐฉ์‹์œผ๋กœ ์จ์•ผํ•ฉ๋‹ˆ๋‹ค:

  • A cached file is not an option (์„œ๋ฒ„์— ์žˆ๋Š” ํŒŒ์ผ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ).
  • ์„œ๋ฒ„๋กœ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ (GET๋ฐฉ์‹์€ ์ „์†กํ•  ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ ์ œํ•œ์ด ์žˆ์œผ๋‚˜ POST ๋ฐฉ์‹์€ ์‚ฌ์ด์ฆˆ ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค).
  • (unknown characters๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š”) ์‚ฌ์šฉ์ž input์„ ์„œ๋ฒ„๋กœ ์ „์†กํ•  ๋•Œ , POST ๋ฐฉ์‹์ด ๋ณด์•ˆ์ƒ GET๋ฐฉ์‹๋ณด๋‹ค ์ข‹์Šต๋‹ˆ๋‹ค.

GET Requests

๊ฐ„๋‹จํ•œ GET ์š”์ฒญ:

์˜ˆ์ œ1

xhttp.open("GET""demo_get.asp"true);
xhttp.send();
์‹ค์Šตํ•˜๊ธฐ ยป

์œ„ ์˜ˆ์ œ์—์„œ๋Š” ์ด๋ฏธ ์บ์‰ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ํ”ผํ•˜๋ ค๋ฉด, ์œ ๋‹ˆํฌ ID๋ฅผ URL์— ๋„ฃ์–ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ2

xhttp.open("GET""demo_get.asp?t=" + Math.random(), true);
xhttp.send();
์‹ค์Šตํ•˜๊ธฐ ยป

GET ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‹ถ์œผ์‹œ๋ฉด, ์ •๋ณด๋ฅผ URL์— ์ž…๋ ฅํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ3

xhttp.open("GET""demo_get2.asp?fname=Henry&lname=Ford"true);
xhttp.send();
์‹ค์Šตํ•˜๊ธฐ ยป

POST Requests

๊ฐ„๋‹จํ•œ POST ์š”์ฒญ:

์˜ˆ์ œ1

xhttp.open("POST""demo_post.asp"true);
xhttp.send();
์‹ค์Šตํ•˜๊ธฐ ยป

HTML ํ˜•์‹์œผ๋กœ POST ์š”์ฒญ์„ ํ•˜๋ ค๋ฉด, setRequestHeader()๋ฅผ ์ด์šฉํ•˜์—ฌ HTTP ํ—ค๋” ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  send() ๋ฉ”์†Œ๋“œ์— ๋ณด๋‚ด๋ ค๋Š” ๋ฐ์ดํ„ฐ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ2

xhttp.open("POST""ajax_test.asp"true);
xhttp.setRequestHeader("Content-type""application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
์‹ค์Šตํ•˜๊ธฐ ยป

The url - ์„œ๋ฒ„ ์ƒ์˜ ํŒŒ์ผ ์ฃผ์†Œ

open() ๋ฉ”์†Œ๋“œ์˜ url ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์„œ๋ฒ„์— ์œ„์น˜ํ•œ ํŒŒ์ผ์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

xhttp.open("GET""ajax_test.asp"true);

์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ํŒŒ์ผ์€ .txt, .xml ํŒŒ์ผ์ฒ˜๋Ÿผ ํ‰๋ฒ”ํ•œ ํŒŒ์ผ๋“ค, ๋˜๋Š” .asp, .php ์™€ ๊ฐ™์€ ์„œ๋ฒ„์Šคํฌ๋ฆฝํŒ… ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.  (์„œ๋ฒ„์Šคํฌ๋ฆฝํŒ… ํŒŒ์ผ๋“ค์€ ์„œ๋ฒ„์—์„œ ์‘๋‹ต์„ ๋ณด๋‚ด๊ธฐ ์ „์— ํŠน์ • ์ผ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.).


๋น„๋™๊ธฐ์‹ - True or False?

ajax๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 3๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฌด์กฐ๊ฑด true์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

xhttp.open("GET""ajax_test.asp"true);

Async=true

์˜ˆ์ œ

xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
  }
};
xhttp.open("GET""ajax_info.txt"true);
xhttp.send();
์‹ค์Šตํ•˜๊ธฐ ยป



Async=false

xhttp.open("GET""ajax_info.txt"false);

async=false ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๋”์ด์ƒ AJAX๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹Œ๊ฒŒ ๋˜์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ํ•˜๊ฒŒ๋˜๋ฉด ์„œ๋ฒ„์—์„œ ์‘๋‹ต์ด ์˜ค๊ธฐ ์ „๊นŒ์ง€ ํ™”๋ฉด์—์„œ ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

xhttp.open("GET""ajax_info.txt"false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
์‹ค์Šตํ•˜๊ธฐ ยป



์ž, ์ง€๊ธˆ๊นŒ์ง€ AJAX๋ฅผ ์ด์šฉํ•œ ์„œ๋ฒ„๋กœ ์š”์ฒญ ๋ณด๋‚ด๊ธฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์‘๋‹ต์„ ๋ฐ›๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.