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 とは、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 も配布するようにしました。
ライセンス的には、データの再配布も
許可されている
ようなので、問題ないかと。
トラックバックURL:http://www.kawa.net/service/tb/ajaxtb.cgi/works/ajax/zip/ajaxzip.html
Kawa.netxp © Copyright 2002-2005 Yusuke Kawasaki