Kawa.netxp ajaxな住所入力フォーム

いっけんすると普通の住所入力フォームですが、郵便番号7桁を入力すると・・・。

郵便番号
都道府県
市区町村〜番地
建物名〜号室

ajax (Asynchronous JavaScript+XML) 技術を利用しています。
Ajax を使った郵便番号検索 Guide to Using XMLHttpRequest が参考になりました。

ajax サーバ側は、Perl CGI+DB_Fileを使用しています。
サーバ側は 単一郵便番号→複数住所な地域に対応していますが、
クライアント側が複数住所には対応していないので、ちょっとそこは手抜きです。

ajax クライアント側は、Windows Internet Explorer 6.0 で動作確認しています。
FireFox 1.0/Netscape 7.1 でも動きました(Windows で確認)。
Opera 7.54 では、動きません。 次期 7.6βなら動くのかもしれませんが、未確認です。
MacOS 9 IE 5.0 では、動きません。ただし、エラーも出ないようにしました。
→2005/05/18追記:Opera 8.0βで動くことを確認しました。

※ CGI 不要の新バージョン AjaxZip2 をリリースしました。導入もカンタンで、オススメです。

ajax とは

ajax とは、Asynchronous JavaScript+XML といって、 送信ボタンとかを押したタイミングとは関係なしに、 自動的にバックグラウンドで適宜サーバと通信を行って、 結果を JavaScript で画面に随時反映していく技術だそうです。

従来のウェブページでは、サーバとの通信中はユーザは プログレスバーを見るだけで待たされていたが、 ajax は非同期処理のため、サーバからのレスポンスを待たずに 画面をそのまま利用できるのがポイント。
サーバからのレスポンスには、XML を使っています。

本システムのファイル構成

本システムは以下のファイルで構成されています。

ajaxzip.html                このページ
share/ajaxzip.js            ajaxクライアントのJavaScript
share/jkl-form.js           フォーム操作部分のライブラリ
ajaxzip.cgi                 ajaxサーバのPerl CGI起動ファイル(パーミション:755)
cgi-lib/ajaxzip-main.pl     ajaxサーバのメインプログラム
cgi-lib/KCatch.pm           Perl エラー捕捉ライブラリ
cgi-data/zip/csv2zipdb.pl   郵便番号辞書DB_File生成プログラム
cgi-data/zip/ken_all.db     郵便番号辞書DB_File

プログラム本体+サンプルのダウンロードはこちら:
ajaxzip-20050907.tar.gz TAR-GZ   ajaxzip-20050907.zip ZIP

ken_all.db については、上記アーカイブには含まれません。
作成手順 を参考にして作成してください。
あるいは、UNIX を操作するのが難しい場合は↓もお試しください。

変換済の ken_all.db 単体のダウンロードはこちら:
Linux用: ken_all.db-linux.zip
FreeBSD用: ken_all.db-freebsd.zip
※OSや、DB_Fileのバージョンによっては、動かないかも?
 逆に、DB_File のバージョンによっては、別の OS でも動くかも?

郵便番号辞書の作成手順

このCGIでは、 ゆうびんホームページ で公開されている全国一括の郵便番号ファイル ken_all.lzh を利用しています。

ダウンロードしたLZHファイルを展開してから、 csv2zipdb.plスクリプトを使用して ken_all.csvをDB_File形式に変換しています。

$ cd cgi-data/zip/

$ wget http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh
22:07:06 (3.53 MB/s) - `ken_all.lzh' saved [1714496/1714496]

$ lha x ken_all.lzh
ken_all.csv     - Melted

$ LANG=C perl csv2zipdb.pl ken_all.csv ken_all.db
北海道    .......................................... 8225
青森県    ........... 2192
岩手県    .......... 1816
		(中略)
宮崎県    ..... 871
鹿児島県  ........ 1443
沖縄県    .... 798

$ rm -f ken_all.lzh ken_all.csv

LZH→CSV→DB_Fileとファイル形式を変換しています。

ken_all.db ファイルの生成後は、ken_all.lzh/ken_all.csv ファイルはどちらも不要です。

シェル操作が禁止されているレンタルサーバなどでは、
この ken_all.lzh から ken_all.db を作成する手順が難しい場合もあると思いますので、
生成済の ken_all.db も配布するようにしました。
ライセンス的には、データの再配布も 許可されている ようなので、問題ないかと。

更新履歴

コメントはこちらへ by AjaxCom

その他のページへのリンク

このページへのトラックバック by AjaxTB

トラックバックURL:http://www.kawa.net/service/tb/ajaxtb.cgi/works/ajax/zip/ajaxzip.html

Kawa.netxp © Copyright 2002-2005 Yusuke Kawasaki