2017-01-18 13 views
0

私は解決できない問題があります。私の目標は、リスト内で選択されているグループ のすべてのメンバーを表示することです。私はこれまでコンソールに選択されたグループ を見ることができますが、私はそれをコントローラに渡す方法を理解できません。うまくいけば、誰かが私の問題を理解しているだろう私のコードは以下の通りです。Jqueryが値をコントローラに渡す(コードネイター)

Members_view.php

<select id="group_id"> 

<?php foreach($groups->result() as $row){?> 

<option value="<?php echo $row->group; ?>" ><?php echo $row->group; ?></option> 
    <?php } ?> 
</select> 

<ul> 
<?php foreach($members->result() as $row){?> 
<li><?php echo $row->firstname." ".$row->lastname; ?></li> 
<?php } ?> 
</ul> 

Jquery.js

$('#group_id').change(function(e) { 
    e.preventDefault(); 
    var base = '<?=base_url()?>'; 
    var grp = $(this).val(); 
    $.ajax({ 
     type: "POST", 
     url: base + "members/members", 
     data: { "group_id": grp }, 
     dataType: "html", 
     cache: false, 
     success: function() { 
      console.log(grp); 
     } 
    }); 
}); 

Members.php

function members(){ 
    $group_id = $this->input->post('group_id',true); 

    $data['groups'] = $this->mdl_members->_all_groups(); 
    $data['members'] = $this->mdl_members->_members($group_id); 
    $this->load->view('members_view',$data); 
} 

Mdl_members.php

function _all_groups(){ 
    $sql = $this->db->query("select * from groups"); 
    return $sql; 
} 

function _members($id){ 
$sql = $this->db->query("select * from members WHERE group_id = '$id'"); 
return $sql; 
} 

よろしくお願いいたします。

答えて

0

Mdl_members.php:モデルはデータを返します。私はarraysを好んでいます。

function _all_groups(){ 
    $sql = $this->db->query("select * from groups"); 
    return $sql->result_array(); 
} 

function _members($id){ 
$sql = $this->db->query("select * from members WHERE group_id = '$id'"); 
return $sql->result_array(); 
} 

Members.php:新しいmembers_view()方法を見てみましょう。彼はview_all_groups()というデータでselectに呼び出しています。

function members_view(){ 
     $data['groups'] = $this->_all_groups(); 
     $this->load->view('members_view',$data); 
    } 

function members(){ 
    $group_id = $this->input->post('group_id',true); 
    $members = $this->_members($group_id); 
    echo json_encode($members); 
} 

Jquery.jssuccess: function(resp)でちょうどいくつかの行members()からjson応答を取得し、<ul id="resp">にそれを置くために。

<script> 
$(function() { 
    $('#group_id').change(function(e) { 
     e.preventDefault(); 
     var base = '<?=base_url()?>'; 
     var grp = $(this).val(); 
     $.ajax({ 
      type: "POST", 
      url: base+"members/members", 
      data: {"group_id": grp}, 
      dataType: "JSON", 
      cache: false, 
      success: function(resp) { 
       var li = ""; 
       $.each(resp, function (i, v) { 
        li+="<li>"+v+"</li>"; 
       }); 
       console.log(li); 
       $('#resp').html(li); 
      } 
     }); 
    }); 
}); 
</script> 

Members_view.php<ul id="resp">応答データを表示するために作成しました。

<select id="group_id"> 
    <?php foreach($groups as $row){?> 
     <option value="<?=$row['group'];?>"> 
      <?=$row['group'];?> 
     </option> 
    <?php } ?> 
</select> 
<ul id="resp">Will be shown here!</ul> 
+0

まだ動作しません。それはコントローラがデータを取得していないようです。私はjsonと何か他のことを試しましたが、それはまだ動作しませんでした。だから、なぜデータが届かないのかを理解する必要があります。 – EyemansDome

+0

'console.log'の応答が見える場合、' controller'はデータを正常に取得しています。 'console.log'が未定義の場合は、' $ .each(resp、function(i、v){li + = "

  • " + v + "
  • ";}に渡される応答フォーマットに注意するだけです。 ; '。 「コントローラ」がデータを取得しないという唯一の兆候は、応答がないことです。 '$( '#resp').html(resp);'何が 'controller'から来ているのか見てください。 – ShutUpMagda