Code Igniter php - 使用JQuery基于下拉选择返回(ajax?)数据

时间:2011-06-01 15:12:16

标签: php jquery ajax codeigniter

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

我已经让我的项目查询数据库中的“树”列表,并使用树名填充一个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);

MODEL:

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和tree_description。

1 个答案:

答案 0 :(得分:4)

如果你制作一个'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(),这样你也可以执行一个get_tree($ id),它在controller_name#show方法中返回一个树,你可以返回一个没有布局的模板,附加。

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){...