人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jQueryの$postの使い方についての質問です。

$.post('test.php',{ test : test },
function(data){
$('#test').html(data);
});

このような感じで使うと思うのですが

<div id='big_area'>
<div id='test'></div>
</div>

このような場合に id='test'の部分だけ取得し、更新したいのですが
$post()では全体を取得してしまうたためできません。
戻り値の生HTML文字列から要素を取得すればよいのかな?と思ったのですが
私のやり方ではできませんでした

jQueryでこのようなことはできるのでしょうか?

上の単純な例に対応したサンプルコードがあれば解説は不要です
よろしくお願いします

●質問者: robopit
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Lhankor_Mhy
●50ポイント

簡単に、

$(data).children('#test');

で、いいと思うのですが、どのように上手くいきませんでしたか?


Lhankor_Mhyさんのコメント
あ、すみません、こっちの方がいいですね。 >|| $(data).find('#test'); ||<

Lhankor_Mhyさんのコメント
えーと、その例で書くなら、 >|| $.post('test.php',{ test : test }, function(data){ $('#test').append( $(data).find('#test') ); }); ||< こんな感じになるかもしれないですね。どこで引っかかってますか?

robopitさんのコメント
$.post('test.php',{ test : test }, function(data){ $('#test').append( $(data).find('#test') ); }); こちらのほうやってみたのですが ボタンおしても反応がありませんでした。 エラーも出ません 変数にいれてからやったりしているのですが、やっぱりできません childrenの方も同じ反応です

Lhankor_Mhyさんのコメント
うーん。 dataの中身はどうなっていますか? >|| <div id='big_area'> <div id='test'></div> </div> ||< を含むHTMLが文字列で入っているんですよね?

robopitさんのコメント
実際ですと <html>からjavascirptコードも含め全て入っています 前後にアラート入れても動きますし、エラーもでていないのに動かないのはどうような問題が考えられるのでしょうか? ちなみにtest.phpは自ページを指しています

Lhankor_Mhyさんのコメント
うーん。 HTML文字列が入っているなら、このサンプルのように成功するはずなんですが。 http://jsfiddle.net/ktg34/

robopitさんのコメント
プラグインを入れていて1.7.1のバージョンなのが関係しているでしょうか?

Lhankor_Mhyさんのコメント
バージョンとかは関係ない気がしますね。 そうすると、$(data).find('#test')が何も返していない、つまりfindメソッドでマッチする要素がなかった、ということになるかと思います。 たとえば、 >|| $('#test').append( $(data).find('div:eq(0)') ); ||< とか書くと、何が起こりますか?

robopitさんのコメント
alertで$(data).find('#test')を見るとobject Objectでした。 上記のものを入れても反応しませんでした appendをhtmlにすると空白になります

robopitさんのコメント
alertでみるとdataの部分表示されますが、$(data).find('#test')は機能or認識していないみたいです

Lhankor_Mhyさんのコメント
ん? スクリプトを動作させているページを取得してるんですか? そうすると、IDかぶってますよね? あれ?ひょっとして必要なのは、id="test"の中身だったりします?

robopitさんのコメント
はいtestの中身を更新してまたtestに戻すのが目的です

Lhankor_Mhyさんのコメント
>|| $('#test').html( $('#test', data).html() ); ||< ちょっと書き方を変えてみました。

robopitさんのコメント
$('#test', data).html() の部分をalertしたnullとでました #testの部分は空白が入りました

Lhankor_Mhyさんのコメント
一応確認なんですが、そのpostで読んだHTMLの#testには何も書いてなかったりしないですよね? そうであるなら、もう現物見てみないとなんとも……

2 ● Cherenkov
●50ポイント
$("#tester").load('test.php #test', { text : test });

これでできないかな。
参考:load( url, data, callback ) - jQuery 日本語リファレンス


robopitさんのコメント
イメート同じ動きをしてくれたのですが、プラグインがおかしな動きしていて失敗しました。 他のやり方もこのプラグインが不自然な動きで失敗したので他のプラグインを探す方向で行きたいと思います。 目的は達成できませんでしたが、勉強になりました。 2人方ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ