- ベストアンサー
グーグルマップの吹き出しからのclickが効かない
http://ideone.com/RzDykQ グーグルマップに吹き出しウインドウを表示させることができるのですが、 そこに配置したフォームからボタンをクリックしてもその処理を $('#send').click(function() のメソッドで受け取ることができません・・・ グーグルマップに吹き出しからではなく、 普通のフォームからやれば受け取ることができるのですが どこが間違えていてどのように記述するれば良いのでしょか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 $('#send').click(function() { }); ですと、動的に生成されたid="send"にイベントを設定できません。 $(document).on ( 'click', '#send', function() { }); にする必要があります。 参考URL http://tacamy.hatenablog.com/entry/2013/03/03/213113
その他の回答 (2)
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 >ただやはり >success: function(data, dataType) >{ >alert("ここではデータが入ってない・・・:"+data); >}, >ここではデータが帰ってこないのです・・・ post.phpできちんと値を返していますか? ここのdata変数はレスポンスの内容になり、var data = { param1: $('#param1').val() };のdataとは関係ありません。 よってpost.phpでは例えばJSON形式で値を返すなら $json = array(); $json['param1'] = $param1; // postの内容をそのまま返す(例えば、param1が"abcde") header ( "Content-Type: application/json; charset=utf-8" ); echo json_encode ( $json ); とした場合、 {"param1":"abcde"} といったJSON形式の文字列が返ります。 そうするとsuccessのdataにはjsonオブジェクトとしての値が入ってきますので alert ( data.param1 ); で受け取った内容の確認ができます。
お礼
ご回答ありがとうございます。 なるほど、post.phpの方で返す必要があるんですね。。 たしかにそれで値が返ってきました。 ありがとうございます。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 試してみましたが、私の環境ではpost.phpでの受け取り、レスポンスでの部分でも取得できています。 Firebugとか開発ツールを使って、リクエストの内容やレスポンスの内容を確認してみてください。
お礼
ご回答ありがとうございます。 すみません、ブラウザの種類を書いていませんでした・・・ ブラウザはchromeのバージョン 27.0.1453.116 m です。 再度データ送ってみて chromeのDeveloper Tools のNetworkのHeaderタブで確認したところ Form Dataの箇所でちゃんと「param1:5」とデータが入っていました。 そしてそのデータをデータベースで取得できていたので post.phpではデータが取得できてるみたいでした。 これはこちらの勘違いでした。申し訳ございませんm(__)m ただやはり success: function(data, dataType) { alert("ここではデータが入ってない・・・:"+data); }, ここではデータが帰ってこないのです・・・ Developer ToolsのNetworkでは送信するとpost.phpしか表示されないで html側に記述したjavascriptのデバッグでどういう値が入っているのか しっかり確認ができない(alert()でデータが表示されない(アラートは表示されます)のでdataには 何も入ってないことは確認できるのですが・・・)のですが、 どうすれば確認できるのでしょうか? あるいはなぜ自分の環境ではsuccess: function側でデータが帰ってこないか LancerVIIさんはお分かりでしょうか?
補足
ちなみにpost.phpのResponse Headersは Connection:Keep-Alive Content-Length:0 Content-Type:text/html Date:Mon, 08 Jul 2013 07:27:30 GMT Keep-Alive:timeout=5, max=100 Server:Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 X-Powered-By:PHP/5.3.1 このような内容です。。
お礼
ご回答ありがとうございます。 $(document).on('click', '#send', function() に書き換えたら入ってきました。 ありがとうございます。 ただ、そこから先で、 http://ideone.com/kz858w var data = {param1 : $('#param1').val()}; alert("ここにはデータが入ってる:"+data); まではデータが入っているのですが、 success: function(data, dataType) { alert("ここではデータが入ってない・・・:"+data); }, や呼び出したphp側でも$_POST['param1']にデータが入っていませんでした。 http://ideone.com/OazZdh これはなぜなのでしょうか? お手数ですがもう一度アドバイス頂けないでしょうか?