郵便番号検索APIを使ってみた。

今回使ったのはグルーブテクノロジー株式会社さんが提供してくれている郵便番号検索APIです。

すでにサンプルソースを用意してくれているのだけれど、表示方法を変えてみました。

ちょっと変更しただけといっても Javascript あんまり詳しくないのでどこかおかしいかも…。
でもまー Javascript 経験値を12くらいは得たなっ!!

XMLHTTPRequest を使ってないけど非同期になってるし(Javascriptだけだから当たり前か)、使わないのも Ajax っていうのかなぁ。

function zipsearch()
{
  var zipcode = document.getElementById( 'zipcode1' ).value + document.getElementById( 'zipcode2' ).value;
  if( ! check_zipcode( zipcode ) )
     return false;
  var target = document.createElement('script');
  target.charset = 'utf-8';
  target.src = 'http://groovetechnology.co.jp/ZipSearchService/v1/zipsearch?zipcode='+encodeURIComponent( zipcode )+'&callback=callback1';
  document.body.appendChild(target);
}

function set_address( obj )
{
  var state = document.getElementById( 'state' );
  var city = document.getElementById( 'city' );
  var town = document.getElementById( 'town' );
  
  if( obj.zipcode.match( /[0-9]{5}00$/ ) )
  {
    state.value = obj.prefecture;
    city.value = obj.city;
    town.value = obj.town;
  }
  else
  {
    state.value = obj.prefecture;
    if( obj.street ) state.value += obj.street ;
    city.value = obj.city;
    if( obj.street ) city.value += obj.street ;
    town.value = obj.town;
    if( obj.street ) town.value += obj.street ;
  }
}

function check_zipcode( zipcode )
{
  if( ! zipcode ) return false;
  if( 0 == zipcode.length ) return false;
  if( ! zipcode.match( /^[0-9]{3}[0-9]{4}$/ ) )
  {
    return false;
  }
  
  return true;
}

function callback1( data )
{
  zip_data = data;
  for (var i in zip_data.zipcode )
  {
    set_address( zip_data.zipcode[i] );
  }
  for (var i in zip_data.office )
  {
    set_address( zip_data.office[i] );
  }
}
<html>
<head>
<span style="color:#FF0000;"><script src="zip_support.js"></script></span>
</head>
<body>
<form method="POST" action="">
<table class="input">
 <tr>
  <th>郵便番号</th>
  <td>
    <input type="text" <span style="color:#FF0000;">id="zipcode1"</span> maxlength="8" />
    - <input type="text" <span style="color:#FF0000;">id="zipcode2"</span> maxlength="8" />
    <span style="color:#FF0000;"><input type="button" onclick="zipsearch();return false;" value="住所検索" /></span>
  </td>
 </tr>
 <tr>
  <th>都道府県</th>
  <td><input type="text" <span style="color:#FF0000;">id="state"</span> maxlength="100" /></td>
 </tr>
 <tr>
  <th>市区町村</th>
  <td><input type="text" <span style="color:#FF0000;">id="city"</span> maxlength="100" /></td>
 </tr>
 <tr>
  <th>町域名</th>
  <td><input type="text" <span style="color:#FF0000;">id="town"</span> maxlength="100" /></td>
 </tr>
</table>
</form>
   <table width="100%">
    <tr>
     <td width="50%" align="right">
      <a href="http://groovetechnology.co.jp/webservice/">
      <img src="http://groovetechnology.co.jp/images/gt_websrv_w.gif" alt="グルーブテクノロジー Web サービス" width="125" height="17" /></a>
     </td>
    </tr>
   </table>
</body>
</html>

投稿した5分後に追記w
XMLHTTPRequest はサーバーと非同期に通信するものだから Javascriptだけで組んでるので使わないのは当たり前!

wikipediaによれば、基本的には XMLHTTPRequest を使うのが Ajax だけど、使わなくても効果的に使ってあれば Ajax と捉える傾向だとか何とか。

IT業界は専門用語が多いし、どこからどこまで!?っていうのもあるしめんどーだ。