質問: ### 前提・実現したいこと スマホで撮影した画像と位置情報をセットにしてDB登録するサイトを作ろうとしています。全体的にはMySQL/PHP/JavaScriptで、位置情報はJavaScriptで取得します。 取得した緯度/経度の数値をPHPに渡してDB登録など処理したいのですが「渡し」が意図通りにできず、前に進めなくて悩んでいます。 ### 質問の内容 位置情報を取得するところはWEBで見つけたものをそのまま使ってます(コメントは自分なりの推測で書いたものも混じっています。コードの意味と違うことが書いてあるかもしれません)。 PHPへの引き渡しは、これまたWEBで見つけたものを加工しているのですが、JavaScriptで作った変数var latをajaxではdata: {"item1":lat }としてPHPに渡そうとしているところがうまくいかず、ajax側での記述の仕方に間違いがありそうと睨んでいます。 下記コードやエラーメッセージから修正すべきところが分かりそうでしたら、アドバイスいただけると幸いです。 ### 発生している問題・エラーメッセージ ページを読み込んで値の渡しがsuccessしたらalartが開くはずですが、なにも表示されません(真っ白なページ)。ブラウザのデベロッパーツールではConsoleに下記メッセージが表示されています。 ``` Uncaught ReferenceError: lat is not defined ``` ### 該当のソースコード ``` ```
回答: スコープの問題です。 functionの中で定義されているのでその中でしか活きません。 ``` function(position){ var location = position.coords; // locationの中のlatitudeをlatとして扱う。nullの場合は"-"とする。 var lat = location.latitude || "-"; // 緯度(-180〜180) // locationの中のlongitudeをlngとして扱う。nullの場合は"-"とする。 var lng = location.longitude || "-"; // 経度(-90〜90) }, ``` ひとまず下記3つの定義をグローバルスコープに移してください。 var location var lat var lng `var`が定義の意味を持つのでグローバルスコープに移したらfunction内の変数につけているvarは取ってくださいね。