• ベストアンサー

jquery codeigniterからデータ取得し表示する

こんばんは。jquery初心者ですので、説明不足があればご指示ください。 codeigniterとjqueryを利用しています。 下記、class="name1"とclass="email1"のデータを、test/test2に渡し、 aaaで値を受け取っています。 受取る値が、Arrayと出ますが、それを表にする場合、どのようにすればいいのでしょうか? 【希望する表示】*例えばtableにする場合 <table> <tr> <td>担当者</td><td>名前</td><td>会社名</td> </tr> ~ここからデータ分ループ?~ <tr> <td>tantosha</td><td>name_jp</td><td>kaishamei</td> </tr> ~ここまでデータ分ループ?~ </table> 【jquery側】 $(".test").click(function(){ var serial = $('.name1').serialize() + '&' + $('.email1').serialize(); $.post("test/test2", serial, function(aaa){ alert(aaa);→分からないので、今はこうしてます^^ }); }); 【codeigniter側】 function test2(){ $a_name = $this->input->post('name1'); $email1 = $this->input->post('email1'); $this->db->select('tantosha'); $this->db->select('name_jp'); $this->db->select('kaishamei'); $this->db->from('テーブル名'); $where = "name_en like '%".$a_name."%' || email1 = '".$email1."'"; $this->db->where($where); $query = $this->db->get(); echo $query->result();

質問者が選んだベストアンサー

  • ベストアンサー
noname#94983
noname#94983
回答No.2

まず、CodeIgniter側だが、このtest2というのは、testというコントローラーの中に用意されたメソッド、と考えていいだろうか? ビューは利用していない、echoのみで出力している、ということだろうか。 また、jqueryで、というのは、つまり「Ajaxでtest2に非同期通信でアクセスし、受け取ったものを表示する」ということで考えていいんだろうか。 だとすると、単純にechoしたものがそのままクライアントに送られると考えていい。ただし、このときに理解しなければいけないのは、「送られるのはテキストのみ」ということ。オブジェクトや配列などをそのままの形で送ることはできない。すべて、「ただのテキスト」として送る必要がある。配列をそのままechoしても、配列のままデータが送られるわけではない。必ず「テキスト」の形にして送らないといけない。 考え方としては、2つある。1つは、CodeIgniter側で<table>タグなどによるHTMLのソースコードを生成して送り返し、jquery側では単にそれをページにはめ込む、という方法。もう1つは、CodeIgniter側ではデータの状態でそのまま送り、jquery側でそのデータを<table>などに整形して表示する、という方法。つまり、「データの状態で送るか、HTMLソースコードで送るか」の違いだ。 HTMLで送るならば、PHP側で、result()で取得したものを繰り返しで順に取り出し、<table>タグのソースコードをテキストとして生成したものをechoしていく。これは、そう難しいものではないからわかると思う。foreach($rec as $result)とかで繰り返しレコードを取り出し、echo "<td>" . $res['hoge'] . "</td>"というように1つずつデータをHTMLのタグで整形して書き出していけばいい。jquery側は、ただ受け取ったものをどこかにはめ込んで表示するだけだ。 データのまま送りたいのであれば、一般的にはJSONかXMLのデータに整形して送り、jquery側で受け取ったデータをもとに処理することになる。JSONが簡単だから、こっちが今は使われることが多いと思う。これは、PEAR::Services_JSONとか、php-jsonといったライブラリを使うことが多い。もちろん、手作業でJSONデータを書き出していってもいい。このへんは、JSONデータの形式がわからないと説明しにくいので、そのへんは勉強するなりしてほしい。 jqueryからのアクセスは、例えば、$('#target').load('./test/test2');とかいう形でいいと思う。これでid=targetのタグに結果が出力される。アクセスするURLとかタグのIDなどは、そっちの環境に合わせて調整すること。

takotan2
質問者

お礼

ありがとうございます! CodeIgniterのコントローラー内で、HTMLのソースコードを生成する・・という方法があるのですね。 その方法で出来ました! jqueryやjavascriptで受け取って・・としか考えていなかったので、自分の得意な方でやります! 本当にありがとうございました!

その他の回答 (1)

  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.1

受け取る値がArrayであれば、JavaScriptで for (var i=0; i<aaa.length; i++) { aaa[i]; // 各値 } のようにすれば各値が取得できると思います。 これを表で表示したいのであれば、 for (var i=0; i<aaa.length; i++) { var text = "<td>"; text += aaa[i]; text += "</td>"; // jQueryのhtml(val)関数を使って表示すべき<tr></tr>内にtextを表示する } こんなような処理になると思います。

takotan2
質問者

お礼

ご回答ありがとうございました! なかなかjqueryやjavascriptになかなか馴染めないため、今回は、No.2様の方法で、表示させる事にしました。 ありがとうございました!

関連するQ&A

専門家に質問してみよう