自社のレンタルサーバー内に設置されたMySQL内に格納されたデータを、客先HP上から取得してHTML上に表示する方法を検討しています。
複数の客先へ配布するもので、それぞれの環境が異なるため、jQueryでデータ取得する方法を考えています。
※クロスドメイン問題はxdomainajax.jsで解決しようとしています。
※xdomainajax.jsはそのままでは動かなかったので以下の書き換えをしています。
http://sidewalkcafe.hatenablog.com/entry/2017/06/29/211719
しかし、うまく取得できないためご助力頂けると大変助かります。
【ざっくりとした手順】
1.客先サーバのpage.htmlをブラウザで開く
・ajaxで自社サーバのdata.phpにアクセス(getでパラメータ送信)
↓
2.自社サーバのdata.phpにGet付きアクセス
・getのパラメータで絞り込んだデータ(1レコード)をMySQLから取得
・(返し方が分からないので)echo で表示
↓
3.返ってきたデータをpage.html内のタグに表示
・success:で所定のidが付いたタグ内に取得したデータを表示
【コードサンプル】
page.html内
html
1<html> 2<head> 3<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 4<script type="text/javascript" src="jquery.xdomainajax.js"></script> 5<script> 6$(function(){ 7 $.ajax({ 8 url: 'http://MYSERVER.jp/data.php', 9 type: 'GET', 10 data:{ 11 id:92 12 }, 13 success: function(data) { 14 var str = $(data.responseText); 15 $('#container').html(str); 16 } 17 }); 18}); 19</script> 20</head> 21<body> 22<div id="container"></div> 23<div id="pref_name"></div> 24<div id="data_name"></div> 25</body>
data.php内
php
1try{ 2 ※pdoでMySQLにクエリ投げる処理 3 ※id=92のレコード(1行)からカラムpref_nameとdata_nameの値を取得 4 5 //クエリで拾ったデータをecho 6 foreach ($data_row as $key => $value) { 7 echo "{"; 8 echo "pref_name:".$value['pref_name'].","; 9 echo "data_name:".$value['data_name']; 10 echo "}"; 11 } 12}
実行後のpage.htmlの<div id="container">内
html
1<div id="container"> 2<result> 3<html> 4 <head/> 5 <body> 6 {pref_name:aaa,data_name:bbb} 7 </body> 8</html> 9</result> 10</div> 11<div id="pref_name"></div> 12<div id="data_name"></div>
…上記のように、データは取得出来たのですが、<result>というタグの中に入ったHTMLデータ(しかもエスケープされた文字列)が返ってきてしまい、何故こうなるのかと頭を悩ませています。もう上記から{}内の文字列を配列に格納してしまおうかとも思いましたが多分本来の方法ではない気がして、よりスマートな取得・表示方法を知りたくて質問しました。
本当にやりたいこと
- 取得したaaaとbbbをそれぞれid="pref_name"とid="data_name"のIDがついたタグの中に表示させたい
出来ないこと
- jQueryにどう記述すればaaaとbbbだけを抜き取れるか
- PHPにどう記述すれば返ってくるデータにhtmlとかheadとかbodyとか不要なものがくっつかなくなるか
よろしくお願いいたします。