- ベストアンサー
Google map JSからPHPに渡す変数
- グーグルマップAPI v3とPHP + Mysql + JavaScriptを使って地図にマーカーを表示させるコードを書いて、変数の渡し方に問題があります。
- JavaScriptの記述で変数に値を持たせることができず、undefinedが返されてきます。
- 特に、function ck()内でのansの渡し方が不明です。プログラムに詳しい方に教えていただきたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
やりたいことは伝わるんだけど・・・ チェックされたらデータを取得してきて・・・っていうなら根本的に作り方を変えたほうがいいと思う。 だってチェックボックスはたぶん複数になる予定だろうし、それをidで引っ張ってたら無駄が多すぎるし作りにくい。 実際のAjax通信はjQueryとか使うの? それだったらjQueryを利用してイベントとか実行するようにしたほうがいいよ。 あとck()の外に document.getElementById('shop').innerHTML= url; とかがあるけど、これ本当に動いているソース?
その他の回答 (3)
- Taiyonoshizuku
- ベストアンサー率37% (183/489)
これから自分でメンテしていくのにやりにくいと思ったら作り直せばいいし、 そんな技術も時間もないんだったら肉付けするしかないんじゃないかな?
お礼
ありがとうございます。
- Taiyonoshizuku
- ベストアンサー率37% (183/489)
>>根本的に作り方を変えたほうがいいと思う。 >が気になっていて、、ザックリとJSONで呼び出してからJqueryで条件に合わせマーカーした方が良いということ>なのかとも考えているのですがどうでしょうか。 んー、今の全体像が見えないからつくりかえたほうがいいかはわからない。 ただ提示されたfunction ch(){}うんぬんってところは違うかなって。 どういう動きを求めているかで変わってくるし。 ボクが依頼されて作ったときは マップ表示する 検索条件をマップの下に並べる 検索条件を入れて検索すると非同期でデータを取得して マップ上にアイコンをプロットするっていうもの。 jQueryで条件に合わせてマーカーってのが良くわからないけど マーカー表示したいデータをJSONなりXMLなりで取得してそのデータをもとに処理する。 ってのが普通のやり方だと思う
補足
>検索条件を入れて検索すると非同期でデータを取得して >マップ上にアイコンをプロットするっていうもの。 似たニュアンスなんです。 もし宜しかったらテストページをご覧いただければと存じます。 http://musubi.tv/js_test/test/ それで参考にしたサイトがこことの事です。 http://waox.main.jp/news/?page_id=1013 最初から作り直すとなると厄介でしょうかね。私のスキルにもよると思いますが・・
- Taiyonoshizuku
- ベストアンサー率37% (183/489)
>根本的に作り方とは、例えばどの様な考え方で作成すればよいのでしょうか。ご教授をお願いします。 と言われても、他にどんな機能があったりするか、他の要因で作り方も多数あるから何とも・・・ チェックボックスのイベント処理だけを言えば下の理由も考慮してこんな感じ? HTML <form id="test"> <label><input type="checkbox" name="kind[]" value="shop">お店</label> <label><input type="checkbox" name="kind[]" value="hospital">病院</label> <label><input type="checkbox" name="kind[]" value="station">駅</label> <input type="text" name="url" size="100"> </form> JavaScript $(document).on('change', '#test input[type="checkbox"]', function(){ var p = $('input[type="checkbox"]', '#test').serialize(); var params = 'lat=35.004442&lng=135.75667120000003&radius=0.65&'+p; $('input[name="url"]', '#test').val(params); $.post('sql.php', params, function(json){ // 返ってきた値でマーカーの表示等を行う処理 console.debug(json); }); }); 簡単に説明すると id="test"の要素内にあるinput type="checkbox"が変更されたら pにチェックボックスたちをserializeした値を入れる んで他のパラメータにくっつける くっつけた値を表示用のinput type="text"にセット(これでどんなパラメータであるか見えるからみてみて) これをAjaxでsql.phpに送信。 sql.phpではlat,lng,radius,kind(配列)が取得できる。 それによって適切なSQLを実行して値を返す。 返ってきた値でマーカー等の表示を制御する >できれば全てを組みなおしたら良いのでしょうがあまり時間がありません、最低限のところを追加したいと考えているのですが、idを引っ張ってくるとかなり無駄が多いのでしょうか。 だっていちいちチェックボックスが増えたらIDを振らないといけないし、取得するときも面倒だしメンテしにくい。
補足
ありがとうございます。 タイトルどうりJSからPHPへ渡すことが出来ました。 ルート検索やマーカー情報を別表示にしたりとかなり重い感じになっていますが >根本的に作り方を変えたほうがいいと思う。 が気になっていて、、ザックリとJSONで呼び出してからJqueryで条件に合わせマーカーした方が良いということなのかとも考えているのですがどうでしょうか。 ご教授いただけないでしょうか
補足
Jqueryを利用したほうがよいのですね。ご意見ありがとうございます。 根本的に作り方とは、例えばどの様な考え方で作成すればよいのでしょうか。ご教授をお願いします。 それと、このソースは恐ろしいことに数年前から本当に動いているソースです。 前ウェブ担が自己の成長に合わせて思いつくままに機能が継ぎ足し継ぎ足しされてきました。v2時代のコメントアウトやPHP4時代のmysqlの残骸やらで、現在では秘伝老舗のソースのようになっています。 できれば全てを組みなおしたら良いのでしょうがあまり時間がありません、最低限のところを追加したいと考えているのですが、idを引っ張ってくるとかなり無駄が多いのでしょうか。