2014-12-24 19 views
0

从数据库中的另一个的选择框的改变事件选择框的值我有一个视图文件作为更改对笨

<select name="tournaments" id ="tournaments" class="form-control"> 
<?php foreach ($tournaments as $tournament): ?> 
<option value="<?php echo $tournament->TournamentID ?>"><?php echo $tournament->TournamentName ?></option> 
<?php endforeach ?> 
</select> 

脚本

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var initial_target_html = '<option value="">Please select a Tournament...</option>'; //Initial prompt for target select 
     $('#matches').html(initial_target_html); 
     $("#tournaments").change(function(e){ 
      e.preventDefault(); 
      var data = ($("#tournaments").val()); 
      $('#matches').html('<option value="">Loading...</option>'); 
      $.ajax({ 
       type:"POST", 
       dataType: 'json', 
       url:"<?php echo base_url('admin/dashboard/update_match_box') ?>", 
       data: {tournament:data}, 
       success: function(data) { 

       } 
      }); 
     }); 
    }); 
</script> 

控制器功能是

public function update_match_box() 
{ 
    $sql = "Some query" 
    $query = $this->db->query($sql); 
    $json= $query->result(); 
    $this->output->set_content_type('application/json') 
     ->set_output(json_encode($json)); 
} 

控制器文件将返回多个行,我需要在成功事件中捕获ajax并相应地更新第二个选择框,我想怎么做?

回答

0

你应该看看form_helper文件中,有建设形式投入了大量的有用的功能,你所要做的就是加载这个帮手: 在的application/config/autoload.php去“帮手“并添加辅助名称如下:

$autoload['helper'] = array('form'); 

下一步,进入到您的视图文件,更改此:

<select name="tournaments" id ="tournaments" class="form-control"> 
<?php foreach ($tournaments as $tournament): ?> 
<option value="<?php echo $tournament->TournamentID ?>"><?php echo $tournament->TournamentName ?></option> 
<?php endforeach ?> 
</select> 

这样:

<?php 
// $tournaments must me an array, use ->result_array() instead of ->result_object() 
$tournaments = array_column($tournaments, 'TournamentName', 'TournamentID'); 
echo form_dropdown('tournaments', $tournaments, '', 'id="tournaments" class="form-control") 
?> 

为您的成功回调函数,你可以使用$。每或只为循环提取每个元素,并为选择输入选项:

$.ajax({ 
    type:"POST", 
    dataType: 'json', 
    url:"<?php echo base_url('admin/dashboard/update_match_box') ?>", 
    data: {tournament:data}, 
    success: function(data) { 
    $('select#secondSelect').html(''); 
    $.each(data, function(item) { 
     $("<option />").val(item.id) 
         .text(item.name) 
         .appendTo($('select#secondSelect')); 
    }); 
    } 
});