• 締切済み

パラメータとhtmlの再描写の関係について

パラメータとhtmlの再描写の関係について 現在、jqueryを使って、getによるリクエストを送信し、コールバック関数でHTMLの再描写を行っているのですが、html()ではなく、replaceなどで一部書き換えると、サーバー側にパラメータが伝わらず困っております。 具体的には、 var url = BASE_URL + "?action=true&user_id="+user_id+"&view_day="+view_day+"&time="+noCache; のように変数view_day等をサーバー側に送るようにし(noCacheはダミー変数)、 そのコールバック関数で、 $("#contents").html(obj.data); とすると、htmlは書き換えられ、サーバー側(php)でも、目的のview_dayの値が取ることができ、うまくいきます。 しかし、 $( 'div#main div#info-container' ) . replaceWith( $('div#main div#info-container',$(obj.data)) ); のようにコールバック関数の引数(obj)を使って、一部を書き換えようとすると、 パラメータとしてview_dayには変化があっても、サーバー側ではその変化した値をとってくれません。 firebugなどではview_dayは3を送っていることが確認できても、html()を使ってhtmlを再描写しない限りは、3を受け取らず、その前に受け取った2のままになってしまったりして、思ったような動作をしてくれません。 僕としては、 firebugで確認しても、正しいパラメータが送られ、ちゃんとリクエストが発行されているのだから、サーバー側でその値は受け取れるはず と考えているのですが、この際にhtmlの描写は関係してくるのでしょうか? できれば、描写に関係なく、パラメータを送れば、そのパラメータがサーバー側で受け取れるようにしたいのですが、なかなかよい方法が見つからないので、ご教授いただけますと嬉しく思います。 よろしくお願い致します。

みんなの回答

  • think49
  • ベストアンサー率59% (285/482)
回答No.1

html() でも replaceWith() でもサーバとの通信は発生しないようですが…。 ------- <div id="Test">test1</div> <p>test2</p> <p>test3</p> <p>test4</p> <p>test5</p> <script type="text/javascript"><!-- jQuery('#Test').html('html'); jQuery('p').replaceWith('<p style="color: green;">replaceWith</p>'); //--></script> ------- html(val) - jQuery 日本語リファレンス http://semooh.jp/jquery/api/attributes/html/val/ replaceWith(content) - jQuery 日本語リファレンス http://semooh.jp/jquery/api/manipulation/replaceWith/content/ 通信が発生するのはAjax関連のAPIであって、html(), replaceWith() は直接関係していないと思います。 Ajax - jQuery 日本語リファレンス http://semooh.jp/jquery/api/ajax/

mduk55
質問者

補足

>html() でも replaceWith() でもサーバとの通信は発生しないようですが…。 >通信が発生するのはAjax関連のAPIであって、html(), replaceWith() は直接関係していないと思います。 僕もそうだと思っていたので、おかしいなと思っていたのですが、 opensocial-jqueryを使っていて、 たとえばですが、 var url = BASE_URL + "?action=true&user_id="+user_id+"&view_day="+view_day+"&time="+noCache; gadgets.io.makeRequest(url, cBack, params); として、リクエストを発行した場合に、 コールバック関数で、 $("#contents").html(obj.data); とした場合と、 $( 'div#main div#info-container' ) . replaceWith( $('div#main div#info-container',$(obj.data)) ); とした場合では、phpで受け取るパラメータの値が異なってくるので、なぜなんだろうと思っています。 ちょっと.postとかopensocial-jqueryに依存しない形で記述するなりして、原因の切り分けをしてみたほうがよいかもしれません。 もうちょっと自分でも調べてみます。