• 締切済み

親ページの要素をAJAXを使って読み込む

親ページのリンクをクリックして子ページへと遷移する際に子ページ上に親ページの一部の要素を表示したく、下記のような処理を子ページに埋め込みました。 <script type="text/javascript"> $(function(){ $.ajax({ type: 'GET', url: '親ページのrootパス/index.html', dataType: 'html', success: function(data) { $("#tableArea").append($("#table01",data).html()); }, error:function() { alert('Any problem has occured!'); } }); }); </script> テストサーバへアップし、Chromeで動作確認のため、consoleで$("#table01",data).html()の値を表示させると空っぽで何もなく、子ページにも表示されません。 $(data)だけでconsoleに表示させると、親ページのDOMが出力されます。 問題解決方法についてご教授頂けると幸いです。

  • AJAX
  • 回答数2
  • ありがとう数14

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

おろ。うーん・・・・じゃあこっちはどうだろう。 $("#tableArea").append($("#table01",$(data)).html()); ↓ $("#tableArea").append($(data).find("#table01").html());

webama_fk
質問者

お礼

お返事ありがとうございます。 最終的に下記のやり方で解決できました。 http://semooh.jp/jquery/api/ajax/load/+url%2C+data%2C+callback+/src-1/ いろいろとお力添え頂き感謝いたします。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

こうするとどうだろう。 <script type="text/javascript"> $(function(){ $.ajax({ type: 'GET', url: '親ページのrootパス/index.html', dataType: 'html', success: function(data) { $("#tableArea").append($("#table01",$(data)).html()); }, error:function() { alert('Any problem has occured!'); } }); }); </script>

webama_fk
質問者

お礼

anmochi様、回答ありがとうございます。 $('XXX')の中に$('XXX')って内包できるんですか!? 知らなかったです。 休み明けに試してみたいと思います。

webama_fk
質問者

補足

anmochi様 ご提示いただいた手法で試してみましたが、結果変わらずでした。

関連するQ&A

  • AJAXの書き方について

    <script type="text/javascript"> $( function() { $( '#ajax-button' ) .click( function() { $.ajax({ url: 'http://localhost:8080/app/family', type:'GET', data: {test1 : 'aaa', test2 : 'bbb' }, dataType: 'jsonp', success: function(data) { alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ng"); } }); }); } ); </script> この部分は何を意味しているのでしょうか? $( '#ajax-button' ) .click( またここの部分をIDにして二つ別々のIDを書いてblur(fn()にしたい場合はどうすればいいのでしょうか? $("[id$=NO]").blur(function(){ $("[id$=NM]").blur(function(){ function() { $.ajax({ url: 'http://localhost:8080/app/family', type:'GET', data: {test1 : 'aaa', test2 : 'bbb' }, dataType: 'jsonp', success: function(data) { alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ng"); } }); }); }); }); このようにしても動きません。 正しい書き方を教えていただきたいです。

  • ajax通信の戻り値が空になる。

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="jquery.xdomainajax.js"></script> <!-- 追加 --> <script type="text/javascript"> $.ajax( { url: URL, type: 'GET', cache: false, dataType: 'xml' } ) .done(function(res) { console.log(res); } ) .fail(function(res) { console.log('FAIL') } ); </script> </head> 上記のコードの通り(url部分は明記を省略)、jquery.xdomainajax.jsを用いたajax通信を行いたいのですが、通信は成功しているもののコンソールを見ると以下のようになっています。 Object { query: Object, results: Array[0] } 本来ならresultsの部分に返り値が格納されるのですが、空になってしまいます。 なにか原因があればご教授頂きたいです。よろしくお願い致します。

  • jqueryのAJAXで通信が完了した時のアラートをLightbox風

    jqueryのAJAXで通信が完了した時のアラートをLightbox風に表示したい。 コード <script type="text/javascript"> //<![CDATA[ $(function(){ $('#exebtn').click(function() { $.ajax({ type: "post", url : "sendmail.php", data : { message: $('#message').val(), exebtn:$('#exebtn').val()}, datatype:'text', //ここの部分をどう変えれば出来るのでしょうか? success: function(data) { if(data != ''){ alert(data); }}, }); }); }); //]]> </script> ご教授、宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • Ajaxがおかしいんです

    Javascript初級者です。 Ajaxを使ってデータの重複チェックを行おうとしました。 ところがAjaxがヘンな動きをするんです。 以下のコードなんですが、上の登録処理の中で、function doubleCheck を呼んで います。 問題は2つあって、ひとつは実際に重複していてもしていなくても「true」を 返してくることです。 console.log("res=========" + res) には「yes」とか「no」とか重複有り無しで 異なりますが、ちゃんとそれぞれセットするにも関わらず、 if(!doubleCheck() では必ず「false」が戻ってきてしまいます。 もう一つおかしい点は、重複検索(これはPHPでやってます)の最中にもかかわらず、 「true」が返ってきて "重複があったので登録できません。" お、出てしまうことです。 それで調査するために console.logその2を入れてみました(※※※のところ)。 ところがこの console 何も吐き出しません。 ということは doubleCheck() の最後の if文にたどり着いていない、または 途中でエラーになっているのかもしれません。 私の書いた Ajax のコードがおかしいんでしょうか。 どなたか御指導下さい。 よろしくお願いします。 // 追加登録処理 function doActionAdd(){ if(dataCheck()){ // customerId が 空白か否かのチェック if($('#customerId').val() == ""){ if(window.confirm("追加登録していいですか?")){ if(!doubleCheck()){ window.alert("重複はありませんでした"); }else{ window.alert("重複があったので登録できません。"); }  (以下略) function doubleCheck(){ var yomi = $('#customerYomi').val(); var res = ''; // 重複チェック $.ajax({ type: "POST", url: "../customer/CustomerDoubleCheck.php", data: {"customerYomi":yomi}, dataType: 'text', // ajax通信が成功したときの処理 success: function(request){ console.log("request=========" + request); var json = JSON.parse(request); console.log(json[0].result ); res = json[0].result; console.log("res=========" + res); }, error: function(XMLHttpRequest, textStatus, errorThrown){ $('div#jobStatus').text("重複チェック検索ができませんでした。"); return false; } }); console.log("resその2=========" + res); //※※※ if(res == "yes"){ // 重複していたので「false」を返す。 return false; }else{ // 重複していなかったので「true」を返す。 return true; } }

  • $.ajaxのscriptCharsetについて

    jQuery.ajaxで外部ファイルのソースを取り込んでそれを表示させたいのですが、 文字化け対策として、scriptCharsetオプションでキャラセットを統一させたいと思っています。 ところがこのscriptCharsetは、 dataTypeが "jsonp" もしくは "script" でGETの時に機能し、"html"には対応していないようです。 ですので、 <p>てててててててて</p> <p>すすすすすすす</p> <p>ととととととととと</p> というtest.htmlを読み込みたい場合は、 var test= '<p>てててててててて</p>\r\n' +'<p>すすすすすすす</p>\r\n' +'<p>ととととととととと</p>\r\n' というtest.jsを作って、 $.ajax({  url: "test.js",  scriptCharset:"UTF-8",  dataType:"script",  complete : function(){   ~.append(test);  }; }); という様にやっています(jsonpは未習得なので分かりません)。 でもこれはあまりにも面倒だし応用が効かないので、直接htmlファイルを、文字コード指定で読み込むことはできないかと模索中です。 何か良い方法があれば教えていただけないでしょうか。 よろしくお願いします。

  • Jquery.ajaxでHTML読み込み

    現在、Jquery.ajaxを使って外部HTMLの読み込み処理を行い、処理完了後にフェードで表示させるということをしているのですが、読み込んだHTMLに貼り付けてある画像が読み込まれる前にHTMLが表示されてしまい、困っています。 Jquery.ajaxでは内包されている画像の監視まではできないのでしょうか? 下記が今作っているコードです。 $contest.css({ "opacity": 0 }); $.ajax({ type: "GET", url: "hoge.html" dataType: "html", success: function(data) { $contest.html($(data).find("#hoge")); }, complete: function() { $contest.stop().animate({ "opacity": 1 }, 1000, "easeOutCubic"); } }); おわかりになる方、ご教授お願いします。

  • AJAXを使って、htmlページにスクリプト

    AJAXを使って、htmlページにスクリプトを記述して、 再読み込みすることなく表示することはできたのですが、 同じドメイン内に限られてしまいます。 違うドメインにスクリプトを記述した場合には、 エラーとなってしまいます。 AJAXはドメイン超えはできないのでしょうか? よろしくお願いします。

  • ajaxによるIEの文字化け回避策について

    貴重な場をお借りして質問させていただきます。 ajaxのIE対応について困っています。 やりたいことはボタンを押したら外部からhtmlを 読み込むということなのですが、 どうしてもIEだけ文字化けしてしまいます。(ボタンを押したら・・・という記述は下記には書いていません。) 文字コードがutf-8ではないということが原因なのですが 出来ればサーバーサイドでの記述なしに解決したいと思っています。 読み込むtest.htmlも親のindex.htmlもshift-jisでして、 この文字コードは変更できず困っております。 下記に現状のソース(ajax部分のみ)を記述したものを表記いたしますので、どなたかお力を貸していただけないでしょうか。 どうかよろしくお願いいたします。 ------------ jquery------------- $(function(){ $.ajaxSetup({  beforeSend: function(xhr){   xhr.overrideMimeType("text/html;charset=Shift_JIS");  } }); $.ajax({  type: 'GET',  url: 'test.html',  dataType: 'html',  success: function(data) { $('#wrap').append(data);  } }); }); ------------ test.html------------- <ul id="hoge"> <li>ここに画像やテキスト</li> </ul>

    • ベストアンサー
    • AJAX
  • Ajaxとページ分割について

    下記のようなスクリプトを作成しました。PEARのPagerによって取り込んだdataをページごとに分割して表示する というものです。 問題点は、最初のページを表示させるのは Ajaxによって実行されていますが、サイト上の「次のページ」をクリックしたときにAjaxから外れてしまう。 サイト上でクリックしてページを切り換えるときにも、Ajaxによって行いたいのですが、 どのような スクリプトにすればいいのか、ヒントなりを教えていただければ助かります。 ■p01.htmlファイル ----------------------- <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script type="text/javascript" src="prototype-1.6.0.2.js" ></script> <script type="text/javascript" src="p01.js" ></script> </head> <body> <p></p> <form name="am01">    name:<input type="text" name="data01">    age :<input type="hidden" name="page_num" value="0">    <input type="button" onClick="ajaxFunction01();" name="exec" value="aaa"/> </form> <div id="result01"></div> </body> </html> ■p01.jsファイル ------------------------- function ajaxFunction01(){ var ajax = new Ajax.Request("p01.php?data01=" + encodeURI(document.am01.data01.value), {method: "GET", onSuccess: gotData}); function gotData(xmlhttp) { document.getElementById("result01").innerHTML = xmlhttp.responseText; } } ■p01.phpファイル -------------------------- <?php require_once("MDB2.php"); $db_type = "mysql"; $sv = "localhost"; $db_name = "phplesson"; $user = "dbuster"; $pass_w = "pass"; $table = "address_t"; $lim = 3; $pg = 0 + $_GET['pg'];//ページ取得の引数 $thispg = 'p01.php'; //サイトのaddress $dsn = "$db_type://$user:$pass_w@$sv/$db_name"; $mdb2 =& MDB2::factory($dsn); if (PEAR::isError($mdb2)){ die($mdb2->getMessage());//"接続エラー" } $res =& $mdb2->query('SELECT * FROM '.$table); if (PEAR::isError($res)){ die($res ->getMessage());//"接続エラー" } if ($mdb2->getOption('result_buffering')) { $dtcnt = $res->numRows();//テーブルに記録された行数 } else { echo '"result_buffering" が無効で行数が取得出来ない'; } $result_types = true ; $mdb2->loadModule('Extended'); $mdb2->setLimit($lim, ($pg * $lim)); $res = $mdb2 -> extended-> autoExecute($table,null,MDB2_AUTOQUERY_SELECT,false,null,true,$result_types); if (PEAR::isError($res)){ die($res->getMessage());//"接続エラー" } if ($dtcnt > (($pg+1) * $lim)){ $nxt = "<a href=\"" .$thispg. "?pg=" .($pg+1). "\">次の" .$lim. "件</a>"; } else { $nxt = "このページが最終"; } if ($pg > 0){ $befr = "<a href=\"" .$thispg. "?pg=" .($pg-1). "\">前の" .$lim. "件</a>"; } else { $befr = "このページが最初"; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> </head> <body> <p> <?php echo $befr ?> <?php echo $nxt ?> </p> <table border="1"> <tr> <td>number</td><td>name</td><td>birthday</td><td>address</td> </tr> <?php while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)){ echo "<tr>"; echo "<td>" .$row["number"]. "</td>"; echo "<td>" .$row["name"]. "</td>"; echo "<td>" .$row["birthday"]. "</td>"; echo "<td>" .$row["address"]. "</td>"; echo "</tr>"; } ?> </table> <?php //切断 $mdb2 -> disconnect(); ?> </body> </html>

    • 締切済み
    • PHP
  • 一部環境でAjaxのHTMLデータ書き換えに不具合

    Ajaxを使用し、HTMLページ内のデータを書き換える処理をしているのですが、iPhone7のsafariだとどうしても口コミデータの表示部分がうまく動きません(※大半のChrome及びiphone6、androidは動作確認ずみ)。問題がどこにあるのかが全く分からず、頭を悩ませています。何か要因となるものや解決策が少しでもわかれば大変助かります。 ご助力の程、何卒よろしくお願い致します。 以下コードを抜粋したものです。 処理1 <script src="../js/rank_2016.js"></script> …etc… <p class="reviewOldShowBtn">以前の口コミデータ表示(<span class="reviewOldCntEle">19</span>件)</p> …etc… (2)../js/rank_2016.js …etc… document.write('<script type="text/javascript" src="XX/php/js/rankReviewPager.js"></script>'); …etc… $(document).ready(function(){  …etc… }) (3)XX/php/js/rankReviewPager.js function listDo(hoge) {  $.ajax({ type: "POST", dataType: 'json', url: 'XX', async: true, //非同期処理      data:{inp:{ a1:hoge }}  }).success(function( data ) {   var obj = data.list;   …etc…   ※ここで実際に以前の口コミを表示する処理を実行   $(".reviewEle" ,elePa ).first().before( '<span>' + obj + '</span>' );   …etc…  }); } jQuery(function(){    //過去の口コミ表示ボタンを押したときのイベント $("#rankEle").on("click", ".reviewOldShowBtn", function(){      ※ここでAjaxを実行 listDo('aaa');   }); } ーーここまでーー

    • ベストアンサー
    • AJAX

専門家に質問してみよう