Search ¼ÀÇÃÀ» ÅëÇÑ Ajax ¼³¸í
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

xmlhttp.js

function paramEscape(paramValue) 
{ 
   return encodeURIComponent(paramValue); 
} 
 
function formData2QueryString(docForm) 
{    
   var submitString = ''; 
   var formElement = ''; 
   var lastElementName = ''; 
    
   for(i = 0 ; i < docForm.elements.length ; i++) 
   { 
     formElement = docForm.elements[i]; 
     switch(formElement.type) 
     { 
        case 'text' : 
        case 'select-one' : 
        case 'hidden' : 
        case 'password' : 
        case 'textarea' : 
           submitString += formElement.name + '=' + paramEscape(formElement.value) + '&'; 
           break; 
        case 'radio' :    
           if(formElement.checked) 
           { 
             submitString += formElement.name + '=' + paramEscape(formElement.value) + '&'; 
           } 
           break; 
        case 'checkbox' :    
           if(formElement.checked)  
           { 
             if(formElement.name = lastElementName) 
             { 
                if(submitString.lastIndexOf('&') == submitString.length - 1) 
                { 
                   submitString = submitString.substring(0, submitString.length - 1); 
                } 
                submitString += ',' + paramEscape(formElement.value); 
             } 
             else 
             { 
                submitString += formElement.name + '=' + paramEscape(formElement.value);  
             } 
             submitString += '&'; 
             lastElementName = formElement.name; 
           } 
           break;  
     }                                                                             
   } 
   submitString = submitString.substring(0, submitString.length - 1); 
   //document.all("result").value = submitString; 
   return submitString;                                
} 
 
function xmlHttpPost(actionUrl, submitParameter, resultFunction) 
{ 
   var xmlHttpRequest = false; 
    
   //IEÀΰæ¿ì 
   if(window.ActiveXObject) 
   { 
     xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP'); 
   } 
   else 
   { 
     xmlHttpReq = new XMLHttpRequest(); 
     xmlHttpReq.overrideMimeType('text/xml'); 
   }    
         
   xmlHttpRequest.open('POST', actionUrl, true); 
   xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
   xmlHttpRequest.onreadystatechange = function() { 
     if(xmlHttpRequest.readyState == 4) 
     { 
        switch (xmlHttpRequest.status)  
        { 
           case 404: 
             alert('¿À·ù: ' + actionUrl + 'ÀÌ Á¸ÀçÇÏÁö ¾ÊÀ½'); 
             break; 
          case 500: 
             alert('¿À·ù: ' + xmlHttpRequest.responseText); 
             break; 
          default: 
             eval(resultFunction + '(xmlHttpRequest.responseText);'); 
             break;      
        }         
     } 
   } 
    
   xmlHttpRequest.send(submitParameter);              
}                         
 


ajax_search.html
<HTML> 
<HEAD> 
<META http-equiv="Content-Type" content="text/html;" charset="euc-kr"> 
<SCRIPT type="text/javascript" src="http://jaso.co.kr/xmlhttp.js"></SCRIPT> 
 
<SCRIPT Language="javascript"> 
<!-- 
       
function keywordKeyDown() 
{ 
    var keyCode = window.event.keyCode; 
     
    if(keyCode ==  9)   return;     //Tab Ű 
    if(keyCode == 13)   return;     //Enter Ű 
    if(keyCode == 16)   return;     //Shift Ű 
    if(keyCode == 16)   return;     //Ctrl Ű 
    if(keyCode == 18)   return;     //Alt Ű 
    if(keyCode == 45)   return;     //Ins Ű 
    if(keyCode == 46)   return;     //Del Ű 
    if(keyCode == 33)   return;     //PgUp Ű 
    if(keyCode == 34)   return;     //PgDn Ű 
    if(keyCode == 35)   return;     //End Ű 
    if(keyCode == 36)   return;     //Home Ű 
     
    if(keyCode >= 37 && keyCode <= 40)   return;     //¹æÇâŰ 
     
    //Keydown À̺¥Æ® ¹ß»ý ½ÃÁ¡¿¡´Â ¾ÆÁ÷ TextField¿¡ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ Å° °ªÀÌ ¼³Á¤µÇÁö ¾Ê¾Ò±â ¶§¹®¿¡ 
    //ºê¶ó¿ìÀú°¡ À̺¥Æ®¿¡ ¹ÝÀÀÇÏ¿© °ªÀ» ¼³Á¤ÇÒ¶§ ±îÁö Àá½Ã ±â´Ù¸°´Ù. 
    setTimeout('submitSearchKeyword()', 250);     
 
} 
 
function submitSearchKeyword() 
{ 
    var url = 'http://jaso.co.kr/searchKeyword.jsp'; 
    var queryString = formData2QueryString(document.MAIN_FORM); 
    var resultProcessMethod = 'viewSearchKeywordResult';  
     
    xmlHttpPost(url, queryString, resultProcessMethod); 
}  
                 
function viewSearchKeywordResult(result) 
{ 
    if(result == "") 
    { 
        var searchKeywordDiv = document.all("searchKeyword"); 
        searchKeywordDiv.innerHTML = ""; 
        searchKeywordDiv.style.visibility = "hidden"; 
    } 
    else 
    { 
        var resultList = result.split('|'); 
        var viewResult = ''; 
        for(i = 0 ; i < resultList.length; i++) 
        { 
            if(i == 0)  viewResult += '<B>' + resultList[i] + '</B> <A href="javascript:hiddenSearchKeywordResult();">[´Ý±â]</A><BR>' 
            else        viewResult += '<A href="javascript:setKeyword(\'' + resultList[i] + '\');">' + resultList[i] + '</A><BR>' 
        }         
        var searchKeywordDiv = document.all("searchKeyword"); 
        searchKeywordDiv.innerHTML = viewResult; 
        searchKeywordDiv.style.visibility = "visible"; 
    } 
} 
    
function hiddenSearchKeywordResult() 
{ 
    var searchKeywordDiv = document.all("searchKeyword"); 
    searchKeywordDiv.innerHTML = ""; 
    searchKeywordDiv.style.visibility = "hidden"; 
} 
    
function setKeyword(selectedKeyword) 
{ 
    document.MAIN_FORM.keyword.value = selectedKeyword;     
}  
                
//--> 
</SCRIPT> 
 
<STYLE type="text/css"> 
<!-- 
  .scroll_div { scrollbar-face-color:#FFFFFF; 
                scrollbar-highlight-color: #aaaaaa; 
                scrollbar-3dlight-color: #FFFFFF;     
                scrollbar-shadow-color: #aaaaaa; 
                scrollbar-darkshadow-color: #FFFFFF; 
                scrollbar-track-color: #FFFFFF;     
                scrollbar-arrow-color: #aaaaaa;} 
--> 
</STYLE> 
</HEAD> 
<BODY onLoad="MAIN_FORM.keyword.focus()"> 
<FORM name="MAIN_FORM"> 
"°¡", "°­"À» ÀÔ·Â ÇØº¸¼¼¿ä.</BR> 
<INPUT type="text" name="keyword" onkeydown="keywordKeyDown()" style:width=150px" autocomplete="off"><A href="javascript:alert('°Ë»öó¸®');">°Ë»ö</A> 
<DIV id="searchKeyword" style="width:250px;height:100px;visibility:hidden;background-color:#D1EED2;overflow=auto;font-size:12px" class="scroll_div"> 
</DIV> 
</FORM> 
</BODY> 
</HTML> 
 

¼Ò½º¿¡´Â º¹ÀâÇÑ ³»¿ëÀº °ÅÀÇ ¾ø´Ù. °Ë»ö¾î ÀÔ·Â TextÀÇ Keydown À̺¥Æ®¿¡ ´ëÇÑ Ã³¸® ºÎºÐ°ú °á°ú¸¦ ¹Þ¾Æ È­¸é¿¡ ³ªÅ¸³»´Â ºÎºÐÀÌ ´ëºÎºÐÀÌ´Ù. AJAX·Î ¼­¹ö¿¡ ´ëÇÑ ¿äûÀº ´ÙÀ½°ú °°Àº ¼ø¼­·Î ó¸®ÇÑ´Ù.

1.XMLHttpRequest °´Ã¼ »ý¼º
IEÀÇ °æ¿ì new ActiveXObject('Microsoft.XMLHTTP');¿Í °°ÀÌ »ý¼ºÇϰí IE°¡ ¾Æ´Ñ °æ¿ì new XMLHttpRequest(); ·Î »ý¼ºÇÑ´Ù.

2. XMLHttpRequest open
open() ¸Þ¼Òµå¿¡´Â 3°³ÀÇ ÆÄ¶ó¹ÌÅͰ¡ Àִµ¥ ù¹øÂ°´Â È£Ãâ¹æ¹ýÀÎ GET, POST Áß¿¡ Çϳª°¡ ¿Â´Ù.
ÇÊÀÚÀÇ °æ¿ì GET ¹æ½Äº¸´Ù´Â POST ¹æ½ÄÀ» ¼±È£Çϱ⠶§¹®¿¡ ´ëºÎºÐÀÇ Request´Â POST·Î Àü¼ÛÇϴµ¥ AJAX¿¡¼­µµ ´ç¿¬È÷ POST¸¦ ¼±È£ÇÑ´Ù.
µÎ¹øÂ° ÆÄ¶ó¹ÌÅʹ ó¸®ÇÏ´Â ¼­¹öÀÇ URL Á¤º¸ÀÌ´Ù.
¼¼¹øÂ° ÆÄ¶ó¹ÌÅÍ´Â ºñµ¿±â/µ¿±â ¹æ½Ä¿¡ ´ëÇÑ ¼±ÅÃÀε¥ trueÀÎ °æ¿ì ºñµ¿±â ¹æ½ÄÀ¸·Î ó¸®ÇÑ´Ù.
ºñµ¿±â ¹æ½ÄÀÇ °æ¿ì Request¸¦ Àü¼ÛÇÑ ´ÙÀ½ ¼­¹ö·ÎºÎÅÍ ÀÀ´äÀÌ ¾ø´õ¶óµµ ºê¶ó¿ìÀú´Â °è¼ÓÇØ¼­ ´Ù¸¥ 󸮸¦ ÇÒ ¼ö ÀÖ´Ù.
»ç¿ëÀڷκÎÅÍ ÀÔ·ÂÀ» ¹Þ°Å³ª ´Ù¸¥ ½ºÅ©¸³Æ®¸¦ ¼öÇàÇÒ ¼öµµ ÀÖ´Ù.
¹Ý¸é µ¿±â¹æ½ÄÀº ¿äûÈÄ ¼­¹ö·ÎºÎÅÍ °á°ú¸¦ ¹ÞÀ»¶§±îÁö ´Ù¸¥ 󸮴 ÇÒ ¼ö ¾øµµ·Ï ÇÏ´Â ¹æ½ÄÀÌ´Ù.
°Ë»ö ÀÔ·Â ÇʵåÀÇ ¿¹Á¦¿¡¼­¿Í °°Àº °æ¿ì´Â ºñµ¿±â ¹æ½ÄÀ¸·Î ó¸®ÇÏ´Â °ÍÀÌ º¸ÅëÀÌÁö¸¸ µ¥ÀÌÅÍÀÇ ¼öÁ¤, »èÁ¦, ÀԷ¿¡ ´ëÇÑ Ã³¸®ÀÇ °æ¿ì¿¡´Â 󸮰¡ ¿Ï·áµÇ¾ú´Ù´Â ¼­¹ö·ÎºÎÅÍÀÇ ÀÀ´äÀ» ¹ÞÀº ÈÄ ´Ù¸¥ ¾×¼ÇÀ» ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀÌ ÁÁ´Ù.

3.requestÀÇ content type ¼³Á¤
GET ¹æ½ÄÀÎ °æ¿ì ¼³Á¤ÇÒ Çʿ䰡 ¾øÁö¸¸ POST ¹æ½ÄÀÎ °æ¿ì¿¡´Â content typeÀ» ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÑ´Ù.

xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

4.¼­¹ö·ÎºÎÅÍ Ã³¸®°á°ú Àü¼Û ÈÄ ¼öÇàÇØ¾ß ÇÏ´Â ±â´É¿¡ ´ëÇÑ Á¤ÀÇ
XMLHttpRequestÀÇ onreadystatechange ¼Ó¼ºÀº ¼­¹ö·ÎºÎÅÍÀÇ Ã³¸® °á°ú¿¡ ´ëÇÑ »óÅÂÄڵ尡 º¯°æµÇ¾úÀ» ¶§ ¼öÇàÇØ¾ß ÇÏ´Â ½ºÅ©¸³Æ® functionÀ» ÁöÁ¤ÇÑ´Ù.
¿©±â¼­´Â anonymous functionÀ» »ç¿ëÇÏ¿© Á÷Á¢ Á¤ÀÇ Çá¿´´Ù.

xmlHttpRequest.onreadystatechange = function() {
if(xmlHttpRequest.readyState == 4)
{
//¼­¹ö·ÎºÎÅÍ ¹ÞÀº »óÅÂÄÚµå ¹× µ¥ÀÌÅ͸¦ ÀÌ¿ëÇÏ¿© 󸮷ÎÁ÷ ±¸Çö
}
}

¼­¹ö·ÎºÎÅÍ ¹ÞÀº °á°ú´Â XMLHttpRequestÀÇ responseText ¼Ó¼º¿¡ ÀúÀåµÇ¾î ÀÖÀ¸¸ç À̰ÍÀº HttpServletResponse¿¡ ÀÇÇØ Àü¼ÛµÈ ¹®ÀÚ¿­Àϼöµµ ÀÖ°í À¥¼­ºñ½º·Î Request¸¦ Àü¼ÛÇÑ °æ¿ì¶ó¸é SOAP ÇÁ·ÎÅäÄÝ·Î Àü¼ÛµÈ XML Çü½ÄÀÇ µ¥ÀÌÅÍÀÏ °ÍÀÌ´Ù.
¹®ÀÚ¿­ÀÎ °æ¿ì ¿©±â¼­ÀÇ ¿¹Á¦¿Í °°ÀÌ Ã³¸®ÇÒ ¼ö ÀÖÁö¸¸ SOAP ÇÁ·ÎÅäÄÝ·Î Àü¼ÛµÈ XML µ¥ÀÌÅÍÀÎ °æ¿ì °¢°¢ÀÇ ºê¶ó¿ìÀú¿¡¼­ Á¦°øÇÏ´Â
XML ¶Ç´Â SOAPÀ» Áö¿øÇÑ °´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ½±°Ô Çڵ鸵ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

5. 4¹ø±îÁöÀÇ ÀÛ¾÷À¸·Î Request°¡ Àü¼ÛµÇÁö ¾Ê´Â´Ù. Àü¼ÛÀ» À§ÇÑ Áغñ ÀÛ¾÷°ú 󸮰á°ú ¼ö½Å½Ã 󸮹æ¹ý¿¡ ´ëÇÑ Á¤ÀǸ¸ ÇÏ¿´À» »ÓÀÌ´Ù.
½ÇÁ¦ Request¸¦ Àü¼ÛÇϱâ À§Çؼ­´Â send()¸¦ È£ÃâÇÏ¿© Àü¼ÛÇÑ´Ù.
send()ÀÇ ÆÄ¶ó¹ÌÅÍ´Â Àü¼ÛµÇ´Â RequestÀÇ ÆÄ¶ó¹ÌÅÍ °ªÀÌ´Ù. ¹°·Ð ¿©±â¼­µµ ÀϹÝÀûÀÎ Request¿Í °°ÀÌ '&', '=' À¸·Î ±¸¼ºµÈ ¹®ÀÚ¿­(¿¹: keyword=test&page=2 )À» ¸¸µé¾î¼­ Àü¼ÛÇÏÁö¸¸, XML ÇüÅ·Π¸¸µé¾î¼­ Àü¼ÛÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù

xmlHttpRequest.send(submitParameter);

searchKeyword.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.util.*" %>
<%
    HashMap keywordData = new HashMap();
    keywordData.put("°¡", "°­Å¸|°­ÀÏ|°¡À»¼Ò³ªÅ¸|°­ÁÖÈñ|°­Àººñ|°­·Â3¹Ý|°­µ¿¿ø|°¡°Ýºñ±³|°¡¹æ|°­¼öÁö");
    keywordData.put("°­", "°­Å¸|°­ÀÏ|°­ÁÖÈñ|°­Àººñ|°­·Â3¹Ý|°­µ¿¿ø|°¡¹æ|°­¼öÁö");
    
    request.setCharacterEncoding("UTF-8"); 

    String keyword = request.getParameter("keyword");
    //¿©±â¿¡¼­ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ ÇØ´ç keyword·Î ½ÃÀÛÇÏ´Â ´Ü¾î °Ë»ö
    //¿¹Á¦¿¡¼­´Â °£´ÜÇÏ°Ô Çϱâ À§ÇØ Hash¿¡¼­ °¡Á®¿À´Â °ÍÀ¸·Î ó¸®
    String result = (String)keywordData.get(keyword);
    if(result == null)      result = "Ű¿öµå ¾øÀ½";
    
    out.print(keyword + " Ű¿öµå ¸ñ·Ï|" + result);
%>

AJAXÀÇ Request¿¡ ´ëÇØ ¼­¹ö¿¡¼­ÀÇ Ã³¸®´Â À§ÀÇ ¼Ò½º¿¡¼­ º¸´Â °Í°ú °°ÀÌ ºñÁî´Ï½º ±â´É¿¡ ´ëÇÑ Ã³¸®(¿©±â¼­´Â µ¥ÀÌÅÍÁ¶È¸)¿¡ ´ëÇØ¼­´Â ±âÁ¸°ú µ¿ÀÏÇÏÁö¸¸ 󸮰á°ú¸¦ ºê¶ó¿ìÀú·Î Àü¼ÛÇÒ¶§ HTML ÇüŰ¡ ¾Æ´Ñ ¼ø¼öÇÑ µ¥ÀÌÅÍÇüŸ¸ Á¦°øÇÏ¿© Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ó¸®Çϵµ·Ï ÇÑ´Ù.
¿©±â¼­´Â µ¥ÀÌÅÍÀÇ ±¸ºÐÀÚ¸¦ '|' ¹®ÀÚ·Î ±¸ºÐÇϵµ·Ï ó¸®ÇÏ¿´´Ù.

AJAXÀÇ °æ¿ì JavaScript·Î 󸮵DZ⠶§¹®¿¡ ÀÎÄÚµù¿¡ ´ëÇÑ Ã³¸®¸¦ ¸ðµÎ UTF-8·Î ó¸®ÇÑ´Ù.
µû¶ó¼­ ¼­¹ö¿¡¼­ Request¸¦ ¹Þ¾Æ ó¸®ÇÒ ¶§¿¡´Â ó¸®ÇÒ ¶§¿¡¼­ ¹Ýµå½Ã UTF-8·Î µðÄÚµùÇÏ¿© ó¸®ÇÏ¿©¾ß ÇÑ´Ù.
¿¹Á¦ÀÇ °æ¿ì searchKeyword.jsp¿¡¼­ ´ÙÀ½°ú °°ÀÌ request¿¡ ´ëÇØ ó¸®Çϰí ÀÖ´Ù.

request.setCharacterEncoding("UTF-8");

Áö±Ý±îÁö AJAX¸¦ ÀÌ¿ëÇÏ¿© °£´ÜÇÑ ±â´ÉÀ» ±¸ÇöÇÔÀ¸·Î½á AJAX¿¡ ´ëÇØ¼­ »ìÆìº¸¾Ò´Ù.
ÇöÀç AJAXÀÇ À§Ä¡´Â À§ÀÇ ¿¹Á¦¿Í °°ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀÇ Æ¯Á¤ ºÎºÐ¿¡ ´ëÇØ¼­¸¸ ÁÖ·Î »ç¿ëµÇ¾îÁö°í ÀÖ´Ù.
¾ØÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ Àüü¸¦ AJAX ±â¹ÝÀ¸·Î ±¸ÇöÇϱ⿡´Â ¾ÆÁ÷±îÁö °æÇè°ú »ç·Ê°¡ ¸¹ÀÌ ºÎÁ·Çϰí AJAX°¡ Rich ClientÀÇ ÁÖ·ù·Î ÀÚ¸® ÀâÀ» °ÍÀÎÁö¿¡ ´ëÇØ¼­´Â ¾ÆÁ÷±îÁö´Â ¹ÌÁö¼öÀÌ´Ù.


´ÜÁ¡ : º¹ÀâÇÑ HTML¿¡ ´ëÇÑ »ý¼ºÀ» ÀÚ¹Ù ½ºÅ©¸³Æ®¿Í °°Àº ½ºÅ©¸³Æ® ¾ð¾î·Î ó¸® (View¿¡ ´ëÇÑ Ã³¸®°¡ ±âÁ¸ÀÇ Servlet¿¡¼­ ó·³ º¹ÀâÇÏ°Ô ±¸ÇöµÊ. ÇöÀç´Â JSP ¶Ç´Â StrutsÀÇ taglib¸¦ ÀÌ¿ëÇÏ¿© ½±°Ô ó¸®Çϰí ÀÖÁö¸¸ À̰ÍÀÌ ¾î·Æ´Ù.)



¿¬±¸ÇؾßÇÒ »çÇ× : ÀÌ·± ´ÜÁ¡À» ±Øº¹ÇÒ ¼ö ÀÖ´Â ½ºÅ©¸³Æ® 󸮿¡ ´ëÇÑ Ç¥ÁØ ¸¶·Ã ¹× ¼Ö·ç¼Ç echo2¿Í °°ÀÌ ÀÌ¹Ì ³ª¿Í ÀÖÁö¸¸ Á» ´õ ¸¹Àº ¿¬±¸ ¹× ·¹ÆÛ·±½ºÀÇ È®º¸°¡ ÇÊ¿äÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Ù.
±×¸®°í Áö±Ý±îÁöÀÇ ¾ÆÅ°ÅØÃ³´Â ÇÁ¸®Á¨Å×ÀÌ¼Ç - ÄÁÆ®·Ñ - ºñÁî´Ï½º - µ¥ÀÌÅÍ¿Í °°Àº ÇüÅÂÀÇ ·¹ÀÌ¾î ±¸Á¶¸¸ ÀÖ¾úÁö¸¸ ÀÌÁ¦´Â ÇÁ¸®Á¨Å×ÀÌ¼Ç °èÃþÀ» Á» ´õ ¼¼ºÐÈ­ÇÏ¿© ÇÁ¸®Á¨Å×ÀÌ¼Ç ³»ºÎ¿¡¼­ÀÇ View(Dynamic È­¸é ±¸¼º), ÄÁÆ®·Ñ(¿äû ¹× ÀÀ´ä¿¡ ´ëÇÑ Á¦¾î), µ¥ÀÌÅÍ(¼­¹ö·ÎºÎÅÍ ¹ÞÀº ¶Ç´Â ¼­¹ö·Î Àü¼ÛÇÒ)¿Í °°Àº ¼¼ºÎÀûÀÎ ¾ÆÅ°ÅØÃÄ¿¡ ´ëÇÑ ¿¬±¸µµ ÇÊ¿äÇÒ °Í °°´Ù.


Å×½ºÆ® ÆäÀÌÁö : ajax_search.html

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.