代码点火器基于JQuery的下拉选择返回(ajax?)数据


Code Igniter return (ajax?) data based on dropdown selection with JQuery

我想生成一些数据进行编辑,根据用户在下拉菜单中的选择进行过滤,但我不想让事情复杂化。

我已经让我的项目在数据库中查询"树"列表,并用树名填充一个dropbox,将tree_id指定为其值。

我所想做的就是,当用户在下拉列表中做出选择时,让JQuery只返回该ID的相关数据(描述等)的列表。

最简单的方法是什么?我甚至需要发出AJAX请求吗?这是我的代码:

控制器:

$this->load->model('Model_form','', TRUE);
$data['trees'] = $this->Model_form->get_tree();
$this->load->view('view_form_tree', $data);

型号:

function get_tree(){
$query = $this->db->query('SELECT * FROM trees');
return $query->result();
}

视图:

<h1>Edit Tree</h1>
<select id="f_treeindex" name="f_treeindex" class="dd_black">
<option value=""></option>
<?php
foreach($trees as $tree){
    echo '<option value="' . $tree->id . '">' . $tree->tree_name . '</option>';
}
?>
</select>
<script type="text/javascript">
     $(document).ready(function() {
        $('#f_treeindex').change(function(){
            var tree_id = $('#f_treeindex').val();
            if (tree_id != ""){
                //DO WHATEVER I NEED TO DO TO CALL THE INFORMATION FOR THE TREE WHOSE ID MATCHES THAT SELECTED IN THE DROPDOWN
            }//end if
        }); //end change
     }); //end docready
</script>

请注意,模型中的SELECT*语句将返回tree_id、tree_name和treedescription。

如果您制作一个"show"控制器方法,该方法返回一个带有数据的裸模板(即:不具有完整布局),则可以执行以下操作:

$('#f_treeindex').change(function(){
    var tree_id = $('#f_treeindex').val();
    if (tree_id != ""){
        $.get('/controller_name/show', {id:tree_id}, function(data){
            $(this).parents('div').append(data);
        })
    }//end if
});

<select>封装在<div>中,这样您的jquery就可以将生成的html附加到.中

此外,我会将get_tree()重命名为get_trees(),这样你也可以在controller_name#show方法中创建一个get_tree$id,返回一个单独的树,你可以在没有布局的情况下返回一个模板。

function show() {
    $this->load->model('Model_form','', TRUE);
    $data['tree'] = $this->Model_form->get_tree($this->params['id']);
    $this->load->view('single_tree_view', $data);
}

此外,不能100%确定CI是如何设置的,因此您的$.get行可能需要是

$.get('/controller_name/show/'+tree_id, function(data){...