AJAX ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ˆ์ œ

์•„๋ž˜ ์˜ˆ์ œ๋Š” AJAX๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฝ์–ด์˜จ ์ž๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์˜ˆ์ œ

form ํƒœ๊ทธ๊ฐ€ ๋จนํžˆ์ง€ ์•Š๋Š” ๊ด€๊ณ„๋กœ ์˜ˆ์ œ๋Š” ์‹ค์Šตํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ W3Schools๋กœ ๊ฐ€์…”์„œ ํ•ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์‹ค์Šตํ•˜๊ธฐ ยป

์˜ˆ์ œ ์„ค๋ช… - showCustomer() ํ•จ์ˆ˜

์‚ฌ์šฉ์ž๊ฐ€ ๋“œ๋ž๋‹ค์šด ๋ฆฌ์ŠคํŠธ์—์„œ ๊ณ ๊ฐ์„ ์„ ํƒํ•˜๋ฉด, "showCustomer()" ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” "onchange" ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ˜ธ์ถœ๋˜๋„๋ก ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

showCustomer ํ•จ์ˆ˜ ์†Œ์Šค ์ฝ”๋“œ

function showCustomer(str) {
  var xhttp; 
  if (str == "") {
    document.getElementById("txtHint").innerHTML = "";
    return;
  }
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("txtHint").innerHTML = xhttp.responseText;
    }
  };
  xhttp.open("GET""getcustomer.asp?q="+str, true);
  xhttp.send();
}

showCustomer() ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.

  • customer๊ฐ€ ์„ ํƒ์ด ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›๊ณ ๋‚˜์„œ ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์— ์žˆ๋Š” ํŒŒ์ผ๋กœ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  • ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ "q" ์™€ ๋“œ๋ž๋‹ค์šด ๋ฆฌ์ŠคํŠธ์—์„œ ์ฝ์–ด์˜จ str์„ URL์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

 AJAX Server Page

์œ„ ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉ๋œ ์„œ๋ฒ„ํŽ˜์ด์ง€๋Š” "getcustomer.asp"์ž…๋‹ˆ๋‹ค.


์„œ๋ฒ„ ํŽ˜์ด์ง€ ํŒŒ์ผ์€ PHP, JSP์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์„œ๋ฒ„ ์–ธ์–ด๋กœ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


PHP๋กœ ๊ตฌํ˜„ํ•œ ๋™์ผํ•œ ๊ธฐ๋Šฅ์˜ ์†Œ์Šค ๋ณด๊ธฐ


 "getcustomer.asp" ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ณ  ์ฝ์–ด์˜จ ์ •๋ณด๋ฅผ HTML ํ…Œ์ด๋ธ”์— ๋„ฃ๋Š” ๊ธฐ๋Šฅ์„ ํ•ฉ๋‹ˆ๋‹ค.

<%
response.expires=-1
sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="
sql=sql & "'" & request.querystring("q") & "'"

set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/datafolder/northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
rs.Open sql,conn

response.write("<table>")
do until rs.EOF
  for each x in rs.Fields
    response.write("<tr><td><b>" & x.name & "</b></td>")
    response.write("<td>" & x.value & "</td></tr>")
  next
  rs.MoveNext
loop
response.write("</table>")
%>


์ž, ํฐ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง€๋‚˜์š”?

์ •๋ฆฌ๋ฅผ ํ•œ๋ฒˆ ํ•ด๋“œ๋ฆฌ์ž๋ฉด,

1. ๋“œ๋ž๋‹ค์šด ๋ฆฌ์ŠคํŠธ์—์„œ ํ•ญ๋ชฉ์„ ์„ ํƒํ•œ๋‹ค.
2. ํ•ญ๋ชฉ์ด ์„ ํƒ๋˜๋ฉด onchange ์ด๋ฒคํŠธ์—์˜ํ•ด showCustomer() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ajax ์š”์ฒญ์ด ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๊ณ 
3. ์„œ๋ฒ„์—์„œ getcustomer.aspํŒŒ์ผ์ด ์‹คํ–‰์ด ๋˜๋Š”๋ฐ ์ด ํŒŒ์ผ์€ DB๋ฅผ ์กฐํšŒํ•ด์„œ ์ฝ์–ด์˜จ ์ •๋ณด๋ฅผ htmlํ˜•ํƒœ์˜ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์„œ ์‘๋‹ต์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
4. ๊ทธ๋Ÿฌ๋ฉด ์ด ์‘๋‹ต์œผ๋กœ ๋ฐ›์€ htmlํ˜•์‹์˜ ์ •๋ณด๋ฅผ ๋“œ๋ž๋‹ค์šด ๋ฆฌ์ŠคํŠธ ์•„๋ž˜์ชฝ์— ๋ฟŒ๋ ค์ค๋‹ˆ๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ajax๋ฅผ ์ด์šฉํ•œ ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

๋ณ„๋กœ ์–ด๋ ต์ง€ ์•Š์ฃ ? ^-^ 

์—ฌ๊ธฐ์„œ AJAX ํฌ์ŠคํŒ…์€ ๋งˆ์น˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ AJAXํฌ์ŠคํŒ…์— ์‚ฌ์šฉ๋œ ์ž๋ฃŒ๋Š” W3Schools์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ๋ฒˆ์—ญํ•ด๋†“์€ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•œ๊ฒŒ ์žˆ์œผ์‹œ๋ฉด ๋Œ“๊ธ€ ๋‹ฌ์•„์ฃผ์‹œ๋ฉด ๋‹ต๊ธ€ ๋‹ฌ์•„๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.