お世話になります。
現在、郵便番号から住所を検索するというよくある機能を実装しているのですが、うまくいかなくて困っています。
郵政省からダウンロードしたCSVを必要な情報にコンバートし、php側で検索する部分まではできたのですが、javascript&htmlのフォームで入力された郵便番号をphpにajaxで渡し、コールバックされた値をフォームに自動入力されるという部分ができなくて困っています。
コンバートされたcsvから、検索するphpのコードを以下に示します
$zipcodeにajaxで渡ってきた郵便番号を入れたいということです。
どうぞ宜しくお願い致します。
test.php
1 2<?php 3//郵便番号 4$zipcode = '123-4567'; 5 6$dir = __DIR__ . '/zipcode'; 7 8$zipcode = mb_convert_kana($zipcode, 'a', 'utf-8'); 9$zipcode = str_replace(array('-','ー'),'', $zipcode); 10 11$result = array(); 12 13$file = $dir . DIRECTORY_SEPARATOR . substr($zipcode, 0, 1) . '.csv'; 14if(file_exists($file)){ 15 $spl = new SplFileObject($file); 16 while (!$spl->eof()) { 17 $columns = $spl->fgetcsv(); 18 if(isset($columns[0]) && $columns[0] == $zipcode){ 19 $result = array($columns[1], $columns[2], $columns[3]); 20 break; 21 } 22 } 23} 24 25if(!empty($result)){ 26 echo $result[0] . $result[1] . $result[2]; 27} else { 28 echo 'Not Found'; 29}
追記致します
少し進んだのでコードを書きます
ajaxで$zipcodeがうまく渡らなくでアラートにNot Foundがでてしまいます。
test.html
1<!DOCTYPE html> 2<html> 3<head> 4<title>郵便番号で住所入力補助</title> 5<meta charset="utf-8"> 6<script src="../js/jquery-1.11.3.min.js"></script> 7<script type="text/javascript"> 8$(function(){ 9 $('#search').click( 10 function(){ 11 $.ajax({ 12 type: 'post', 13 url: "https://test.php", 14 data: {data: $("zipcode").val()}, 15 success: function(data){ 16 alert(data); 17 } 18 }); 19 } 20 ); 21}); 22</script> 23</head> 24<body> 25<form> 26 <p>郵便番号:<input type="text" name="zipcode" id="zip" size="8"> 27 <input type="button" id="search" value="郵便番号で検索"></p> 28 <p>住所:<input size="50" type="text" name="address" id="address"></p> 29</form> 30</body> 31</html> 32
test.php
1<?php 2//郵便番号 3$zipcode = $_POST['zipcode']; 4 5$dir = __DIR__ . '/zipcode'; 6 7$zipcode = mb_convert_kana($zipcode, 'a', 'utf-8'); 8$zipcode = str_replace(array('-','ー'),'', $zipcode); 9 10$result = array(); 11 12$file = $dir . DIRECTORY_SEPARATOR . substr($zipcode, 0, 1) . '.csv'; 13if(file_exists($file)){ 14 $spl = new SplFileObject($file); 15 while (!$spl->eof()) { 16 $columns = $spl->fgetcsv(); 17 if(isset($columns[0]) && $columns[0] == $zipcode){ 18 $result = array($columns[1], $columns[2], $columns[3]); 19 break; 20 } 21 } 22} 23 24if(!empty($result)){ 25 echo $result[0] . $result[1] . $result[2]; 26} else { 27 echo 'Not Found'; 28}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/27 02:20
2015/11/27 02:35
2015/11/27 03:22
2015/11/30 03:08