본문 바로가기
프로그래밍/ASP

[Ajax] ASP와 연동하여 우편번호 검색하기

by 백룡화검 2008. 6. 29.

출처 [가치지향]님의 .NET Brain...C# | 가치지향
원문 http://blog.naver.com/hanbyi/110016653578

ajax_blog05-hanbyi

우편번호 테이블 설계화면입니다.

ajax_blog01-hanbyi

 

zip_search.asp 파일 실행시 초기화면입니다.

기본적으로 [시도선택]콤보박스는 최초 페이지가 읽혀질 때 우편번호 테이블에서 읽어옵니다.

[구군선택]콤보박스는 초기에는 아무 내용도 없지만,

[시도선택]콤보박스에서 원하는 시도를 선택하면  Ajax를 이용하여 해당 구군을 표시하게 됩니다.

ajax_blog02-hanbyi

초기에는 구군콤보박스에 아무 내용도 들어있지 않습니다.

ajax_blog03-hanbyi

시도를 선택하고 난 이후의 구군콤보박스의 모습입니다.

Ajax를 이용하여 비동기식으로 원하는 자료를 테이블에서 쿼리한 결과입니다.

ajax_blog04-hanbyi

원하는 동을 입력한 후 검색을 하면 역시 Ajax를 이용하여 검색된 결과를 표시하도록 하였습니다.

아래 소스를 통해서 자세히 알아보도록 하겠습니다.

<!--  Zip_Search.asp -->
<!--#include file="dbcon.inc"-->
<%
     response.charset = "euc-kr"

     set rs = server.CreateObject("adodb.recordset")
     sql = "select distinct sido from tb_zip order by sido "
     rs.open sql, db, 1
%>

<script>
var ajax_gugun;

function get_gugun_list(sido)
{  
      ajax_gugun = new ActiveXObject("Microsoft.XMLHTTP");
      ajax_gugun.onreadystatechange = get_gugun_list_callback;
      ajax_gugun.open("GET", "Zip_GugunList.asp?sido=" + sido, true);

      ajax_gugun.send();
}

function get_gugun_list_callback()
{
      if(ajax_gugun.readyState == 4){   
           if(ajax_gugun.status == 200){
                if(typeof(document.all.div_gugun) == "object"){
                    document.all.div_gugun.innerHTML = ajax_gugun.responseText;
                }
           }
      }
}

var ajax_addr;
function get_addr_list(){
      var sido, gugun, dong;

      sido = document.frmZip.sido.value;
      gugun = document.frmZip.gugun.value;
      dong = document.frmZip.dong.value;

      if (dong.length < 2)            return false;

      ajax_addr = new ActiveXObject("Microsoft.XMLHTTP");

      ajax_addr.onreadystatechange = get_addr_list_callback;
      ajax_addr.open("GET", "Zip_AddrList.asp?sido=" + sido + "&gugun=" + gugun + "&dong=" + dong, true);

      ajax_addr.send();
}

function get_addr_list_callback()
{
      if(ajax_addr.readyState == 4){
          if(ajax_addr.status == 200){
              if(typeof(document.all.div_zip_list) == "object"){
                    if(ajax_addr.responseText.length > 0){
                         document.all.div_zip_list.style.display = "";
                         document.all.div_zip_list.innerHTML = ajax_addr.responseText;
                    }
                   else
                         document.all.div_zip_list.style.display = "none";     
               }
          }
     }
}

</script>

<style>
      input, select, td {  font-family:tahoma;font-size:9pt; }
</style>

<table border="0" cellpadding="4" cellspacing="0" width="400">
<form name="frmZip">
<tr>
  <td>
   <select name="sido" onChange="get_gugun_list(this.value);">
       <option value="">시도선택</option>
    <% Do Until rs.eof %>
          <option value="<%=rs("sido")%>" ><%=rs("sido")%></option>
    <%
               rs.movenext
          Loop

          rs.close
          Set rs = Nothing
    %>
   </select>
  </td>
  <td>
<div id="div_gugun">

       <select name="gugun" >   
             <option value="">구/군선택</option>    
       </select>

   </div>
  </td>
  <td>
     동이름 : <input type="text" name="dong" style="width:50">
     <input type="button" value="검색" onClick="get_addr_list();" style="width:40;border-style:solid;border-width:1">
  </td>
</tr>
<tr>
  <td colspan="3" align="center">
       동이름을 입력하시오(2글자 이상)<br>
       (예 : 논현, 구의1동, .. )
  </td>
</tr>
</form>
</table>

<div id="div_zip_list" style="display:none;overflow-y:scroll; height:300;width:400"></div>

<!--  Zip_GugunList.asp -->
<!-- #include file="dbcon.inc"-->

<%
     response.charset = "euc-kr"

     sido = request("sido")
     sql = "select distinct gugun from tb_zip where sido = '" & sido & "'   order by gugun"
     Set rs = server.CreateObject("adodb.recordset")
     rs.open sql, db, 1
%>

<select name="gugun" >   
      <option value="">구/군선택</option> 

<% Do Until rs.eof  %>
      <option value="<%=rs("gugun")%>" ><%=rs("gugun")%></option>
<%
          rs.movenext
      Loop

      rs.close
      Set rs = Nothing
%>

</select>

<!--  Zip_AddrList.asp -->
<!--#include file="dbcon.inc"-->
<%
     response.charset = "euc-kr"

     sido = request("sido")
     gugun = request("gugun")
     dong = request("dong")

     If sido = "" And gugun = "" Then
sql = "select zipcode, sido, gugun, dong, ri, build, addr from tb_zip where dong like '%" & dong & "%'"
     ElseIf sido <> "" And gugun = "" Then
  sql = "select zipcode, sido, gugun, dong, ri, build,  addr from tb_zip where sido = '" & sido & "' and dong like '%" & dong & "%'" 
     ElseIf sido <> "" And gugun <> "" Then
  sql = "select zipcode, sido, gugun, dong, ri, build,  addr from tb_zip where sido = '" & sido & "' and gugun = '" & gugun & "' and dong like '%" & dong & "%'" 
     End If

     Set rs = server.CreateObject("adodb.recordset")
     rs.open sql, db, 1
%>

<table cellpadding="3" cellspacing="3" border="1" width="400">
<%
     Do Until rs.eof
         zip = "[" & Left(rs("zipcode"), 3) & "-" & Right(rs("zipcode"), 3) & "]"
%>
   <tr>
     <td>
         <a href="#"><%=zip%> </a>
    </td>
    <td>
         <%=rs("addr")%>
    </td>
   </tr>
<%  
       rs.movenext
    Loop
%>

'프로그래밍 > ASP' 카테고리의 다른 글

ASP/ 불법 게시물 자동 등록 막기  (0) 2008.06.29
ASP 고급기술?  (0) 2008.06.29
URL 자동링크 함수  (0) 2008.06.29
코딩 규약 (HTML/ASP/JavaScript)  (0) 2008.06.29
다중 셀렉트  (0) 2008.06.29