jsonファイルから1~47番目まで書いたものと各住所が記載されたファイルから番号と住所を取得しjQueryのajax通信で取得した郵便番号から住所フルとない場合のエラー表示を実装しようかと思うのですがなぜか市町村からしか出来ません。
コードと実際に試したことを下に記載致します。どこの部分のコードがエラーになっているか教えて頂ければと思います。
json
1"0220000":[3,"大船渡市",""],"0220211":[3,"大船渡市","三陸町綾里"],"0220005":[3,"大船渡市","日頃市町"],"0228508":[3,"大船渡市","赤崎町","字鳥沢164-2"],"0228512":[3,"大船渡市","大船渡町","字山馬越10-1"],"0220003":[3,"大船渡市","盛町"],"0228501":[3,"大船渡市","盛町","字宇津野沢15"],"0228602":[3,"大船渡市","大船渡町","字欠ノ下向1-125"],"0228502":[3,"大船渡市","猪川町","字前田6-1"],"0228505":[3,"大船渡市","大船渡町","字永沢6-16"],"0228504":[3,"大船渡市","盛町","字二本枠5"],"0220004":[3,"大船渡市","猪川町"],"0220006":[3,"大船渡市","立根町"],"0220001":[3,"大船渡市","末崎町"],"0220007":[3,"大船渡市","赤崎町"],"0228503":[3,"大船渡市","大船渡町","字茶屋前101"],"0220102":[3,"大船渡市","三陸町吉浜"],"0228507":[3,"大船渡市","盛町","字下舘下7番地16"],"0220002":[3,"大船渡市","大船渡町"],"0220101":[3,"大船渡市","三陸町越喜来"]} 2
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>住所自動入力フォーム</title> 6 <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 7 <script type="text/javascript" src="zip_search1.js"></script> 8 </head> 9 <body> 10 <p>郵便番号を入力すると住所を自動取得します。<br> 11 <span style="font-size:80%;color:#666">(新しい郵便番号の場合は手動で入力してください)</span></p> 12 <form onSubmit="return false;"> 13 <table border="0"> 14 <tr> 15 <th>郵便番号</th> 16 <td><input type="text" name="zip1" id="zip1" size="4" maxlength="3"> 17 - <input type="text" name="zip2" id="zip2" size="5" maxlength="4" 18 onKeyUp="ZipSearch.searchAddr('#zip1','#zip2','#prefecture','#address');"></td> 19 </tr> 20 <tr> 21 <th>住所 22</th> 23 <td><input type="text" name="address" id="address" size="45"></td> 24 </tr> 25 </table> 26 <p><input type="reset" value="リセット"></p> 27 </form> 28 </body> 29</html> 30 31 32```javascript
$(function () {
ZipSearch = new Object();
ZipSearch.dir ="./data";
ZipSearch.searchAddr = function( bango1,bango2, todofuken, shikuchoson ) {
var e_bango1 = $(bango1);
var e_bango2 = $(bango2);
var e_todohuken =$(todofuken);
var e_shikuchoson =$(shikuchoson);
if(! e_bango1 ) err(1); if(! e_bango2 ) err(1); if(! e_todohuken ) err(1); if(! e_shikuchoson ) err(1); var zip1 =e_bango1.val(); var zip2 =e_bango2.val(); var zip3 = zip1 + zip2; if(zip1.length != 3) return; if(zip2.length != 4) return; if ( ! zip3.match(/^[0-9]{7}$/)) err(2); var ajaxFunc = function (data){ var jsonData = JSON.parse(JSON.stringify(data)); var array = jsonData[zip3]; if(array) { var pref_id = array[0]; var ken = { 1:"北海道", 2:"青森県", 3:"岩手県", 4:"宮城県",
5:"秋田県", 6:"山形県", 7:"福島県", 8:"茨城県", 9:"栃木県",
10:"群馬県", 11:"埼玉県", 12:"千葉県", 13:"東京都", 14:"神奈川県",
15:"新潟県", 16:"富山県", 17:"石川県", 18:"福井県", 19:"山梨県",
20:"長野県", 21:"岐阜県", 22:"静岡県", 23:"愛知県", 24:"三重県",
25:"滋賀県", 26:"京都府", 27:"大阪府", 28:"兵庫県", 29:"奈良県",
30:"和歌山県",31:"鳥取県", 32:"島根県", 33:"岡山県", 34:"広島県",
35:"山口県", 36:"徳島県", 37:"香川県", 38:"愛媛県", 39:"高知県",
40:"福岡県", 41:"佐賀県", 42:"長崎県", 43:"熊本県", 44:"大分県",
45:"宮崎県", 46:"鹿児島県", 47:"沖縄県"
};
var select_japan=""; for(var i = 1;i < pref_id.lenght;i++){ for(var j=1;j < ken.length;j++){ var select_japan =ken[j]; } } var j_pref = select_japan; var j_city = array[1]; var j_area = array[2]; e_shikuchoson.val(j_pref+j_city + j_area); } else { jarea =' '; jcity = ' '; err(3); } }; var dataPath = ZipSearch.dir+'/zip-'+zip1+'.json'; $.get( dataPath, ajaxFunc ); }; function err(num) { var errCase = num; if(errCase == 1) { alert('プログラムエラーです。\n恐れ入りますが手動で入力してください。'); } else if(errCase == 2) { alert('郵便番号は半角数字で入力してください。'); } else if (errCase == 3) { alert('住所が取得できませんでした。\n恐れ入りますが手動で入力してください。'); } retrun; };
});
試したことは、each構文でPHPのforeach構文で要素を取得しようとしました。 ```jQuery var i = pref_id; var select_japan =""; $.each(ken, function(i, val) { select_japan =ken[val]; });
どなたか御教授頂ければと思います。
宜しくお願い致します
回答1件
あなたの回答
tips
プレビュー