質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1394閲覧

グーグルマップAPIを使って郵便番号検索したい

kd_2w

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/04/12 08:13

前提・実現したいこと

プログラミングの勉強初めて3ヶ月のものです。
通販サイトの購入者情報の入力を実装しています。郵便番号を入力してボタンをクリックすると住所が町名まで
自動で出るものを作りたいと思います。よろしくお願いします。

teratailに初めて質問しますので質問の仕方でこういう書き方をしたらいいというのもあれば教えてください。

発生している問題・エラーメッセージ

検証ツールのConsoleでのエラー Failed to load resource: the server responded with a status of 404 (Not Found)

該当のソースコード

html

1 2<!DOCTYPE html>     //application.html.erbに記述しています 3<html> 4<head lang="ja"> 5     〜(省略)〜 6   <script type="text/javascript" src="https://js.pay.jp/v1/"></script> <%#購入機能 %> 7 <%= stylesheet_link_tag 'application', media: 'all'%> 8 <%= javascript_pack_tag 'application' %> 9 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> 10 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 11 <script src="postal_code.js"></script> 12 </head>

HTML

1<div class="form-group"> 2 <div class='form-text-wrap'> 3 <label class="form-text">郵便番号</label> 4 <span class="indispensable-2">必須</span> 5 </div> 6 7 <div class='tooltiper nameCheck'> 8 <span class="tooltipMsg3">ハイフンを除いて入力してください<br>入力しましたら横の「検索」ボタンを押してください<br>町名まで自動で入力されます</span> 9 </div> 10 <%= f.text_field :postal_code, class:"input-default2", id:"postal-code", placeholder:"例)1234567", maxlength:"8" %> 11 <button id="kensaku" class="postal-code-btn">検索</button> 12 </div> 13 <div class="form-group"> 14 <div class='form-text-wrap'> 15 <label class="form-text">都道府県</label> 16 <span class="indispensable-2">必須</span> 17 </div> 18 <%= f.text_field :area, class:"input-default2", id:"pref" ,placeholder:"例)神奈川県"%> 19 </div> 20 <div class="form-group"> 21 <div class='form-text-wrap'> 22 <label class="form-text">市区町村</label> 23 <span class="indispensable-2">必須</span> 24 </div> 25 <%= f.text_field :city, class:"input-default2", id:"city", placeholder:"例)横浜市"%> 26 </div> 27 <div class="form-group"> 28 <div class='form-text-wrap'> 29 <label class="form-text">番地</label> 30 <span class="indispensable-2">必須</span> 31 </div> 32   <%= f.text_field :address, class:"input-default2", id:"addresses", placeholder:"例)町名以下を入力してください"%> 33 </div> 34 <div class="form-group"> 35 <div class='form-text-wrap'> 36 <label class="form-text">建物名</label> 37 <span class="form-any">任意</span> 38 </div>

javascript

1//apllication.jsに記述 2require("../postal_code") 3require("../card")

javascript

1window.onload = function(){ 2 $('#kensaku').on('click', () => { //$(#btn)でHTMLの検索ボタンのidの#btnを取得できる。「クリックされたら{}内の処理をする」という動きになる。 3 $.ajax({ 4 url: "http://zipcloud.ibsnet.co.jp/api/search?zipcode=" + $('#postal-code').val(), //リクエスト先のURLの末尾に、HTMLで入力された郵便番号を加える。postcodeは郵便番号のid 5 dataType: 'jsonp', //なお$('#postcode').val()で郵便番号を取得している。 dataTypeにはレスポンスとして受け取るデータ形式を指定する。ここではjsonpを設定。 6 }).done((data) => { 7 if (data.results) { //if (data.results)で「もし、dataに結果の情報(results)が入っていたら」という条件で分岐をする。 8 getData(data.results[0]); //入力した郵便番号が存在しない場合、後に記述するエラー内容(該当データが見つかりません)がアラートで出る。 9 } else { 10 alert('該当データが見つかりません'); 11 } 12 }).fail((data) => { //}).fail((data) => {では、何らかの原因で通信が失敗したときにアラートが出るように設定している。 13 alert('通信に失敗しました'); 14 }); 15 }); 16 17 function getData(data) { //getDataという関数を用意して、都道府県・市区町村・住所などの情報を使ってそれぞれのプロパティに代入する。 18 $('#pref').val(data.address1); //RubyみたいにgetDataが先に読まれるのではない 19 $('#city').val(data.address2); 20 $('#addresses').val(data.address3); 21 } 22}; 23

ディレクトリの構造
app
□javascript
□□□□postal_code.js
□□□□card.js

□は配下を表しています。書き方下手ですいません。

試したこと

postal_code.jsの場所をpublicの中にしたり、packsの中にしたりしました。

補足情報(FW/ツールのバージョンなど)

Rails 6.0.3.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/04/12 08:23

質問の書き方に関してはヘルプの「質問するときのヒント」からどうぞ。
mather

2021/04/12 09:13

グーグルマップAPIは使っていないようなので、質問のタイトルを「郵便番号から住所を取得するAPIを使ってフォーム入力を行いたい」などにすると良いと思います。
kd_2w

2021/04/12 10:09

K_3578様、mather様ありがとうございます。
guest

回答2

0

ベストアンサー

グーグルマップAPIを使うのは必須なのですか?

https://into-the-program.com/javascript-get-address-zipcode-search-api/
を参考にすれば、それほど難しくはないと思いますし、やりたいことが、グーグル・マップAPI(?)を使って行うが必須でなければ、充足されていると思います。

投稿2021/04/12 08:25

nfox

総合スコア229

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kd_2w

2021/04/12 10:02

回答ありがとうございます。 https://into-the-program.com/javascript-get-address-zipcode-search-api/を参考にコードを修正し先程のエラーは解決しました。しかし、郵便番号を入力し検索ボタンをクリックするとこのページのページ未入力のエラーのページへ遷移します。下のコードが動いた時に発生するものです。 <%= form_with model:@order_buy, url:food_orders_path(@food.id),id: 'charge-form', class: 'transaction-form-wrap',local: true do |f| %> <%= render 'layouts/error', model: f.object %>   //エラー表示    〜(省略)〜  <div class='buy-btn'> <%= f.submit "購入" ,class:"buy-red-btn" %> </div> 何か非同期通信に何かつけないといけないのでしょうか?
guest

0

投稿2021/04/12 08:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kd_2w

2021/04/12 10:11

ご指摘ありがとうございます。今後もよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問