簡體   English   中英

在Codeigniter中從數據庫中另一個選擇框的更改事件更改選擇框的值

[英]Changing value of selectbox on change event of another select box from database in codeigniter

我有一個查看文件

<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成功事件中捕獲該行並相應地更新第二個選擇框,我應該怎么做?

您應該看一下form_helper文件,其中有許多有用的功能可用於構建表單輸入,您所需要做的就是加載此幫助程序:在application / config / autoload.php中,轉到“ helper”並添加該幫助程序名稱如下:

$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") 
?>

對於成功的回調函數,可以使用$ .each或just for循環來提取每個元素並為select輸入創建選項:

$.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'));
    });
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM