電子書籍の厳選無料作品が豊富!

http://ideone.com/RzDykQ

グーグルマップに吹き出しウインドウを表示させることができるのですが、
そこに配置したフォームからボタンをクリックしてもその処理を
$('#send').click(function()
のメソッドで受け取ることができません・・・
グーグルマップに吹き出しからではなく、
普通のフォームからやれば受け取ることができるのですが
どこが間違えていてどのように記述するれば良いのでしょか?

A 回答 (3件)

こんにちは。




$('#send').click(function() {
});

ですと、動的に生成されたid="send"にイベントを設定できません。

$(document).on ( 'click', '#send', function() {
});

にする必要があります。


参考URL
http://tacamy.hatenablog.com/entry/2013/03/03/21 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
$(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

これはなぜなのでしょうか?
お手数ですがもう一度アドバイス頂けないでしょうか?

お礼日時:2013/07/08 14:58

こんにちは。



>ただやはり
>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 );
で受け取った内容の確認ができます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほど、post.phpの方で返す必要があるんですね。。
たしかにそれで値が返ってきました。
ありがとうございます。

お礼日時:2013/07/09 08:40

こんにちは。



試してみましたが、私の環境ではpost.phpでの受け取り、レスポンスでの部分でも取得できています。

Firebugとか開発ツールを使って、リクエストの内容やレスポンスの内容を確認してみてください。

この回答への補足

ちなみに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

このような内容です。。

補足日時:2013/07/08 16:47
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
すみません、ブラウザの種類を書いていませんでした・・・
ブラウザは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さんはお分かりでしょうか?

お礼日時:2013/07/08 16:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!