2

我将如何index.php/backend/categories/get_categories/$id<select>onChange 下拉列表中访问此 url?

我的意思是,如果我去index.php/backend/categories/get_categories/1,它将输出一个包含所有类别的表格component id 1

我想要的是,一旦我从下拉列表中选择一个选项,我希望它提交并重定向到相同的 url,但具有来自的特定 ID <option val="$id">

使用 CodeIgniter FORM 助手生成下拉列表:

<?php
    echo form_open('backend/categories/get_categories');
    $selectComponentData = array(0 => '-- '.lang('SELECT_COMPONENTS').' --');
    $selectComponentJs = 'onChange="this.form.submit()" id="selectCatsByComponent"';

    foreach($selectComponents as $option){
        $selectComponentData[$option->id] = $option->name;
    }
    echo form_dropdown('selectCatsByComponent', $selectComponentData, 0, $selectComponentJs);
    echo form_close();
?>

输出 HTML 为:

<form accept-charset="utf-8" method="post" action="http://127.0.0.1/backend/web/index.php/backend/categories/get_categories">
    <select id="selectCatsByComponent" onchange="this.form.submit()" name="selectCatsByComponent">
        <option selected="selected" value="0">-- Choose a component --</option>
        <option value="1">E-commerce</option>
        <option value="2">Content</option>
    </select>
</form>

如何使它成为可能?

4

2 回答 2

1

如果我没有误会你,你在问这样的事情;

在控制器中;

public function get_categories()
{
    if(isset($_POST) && !empty($_POST())
    {

        $id = $this->input->post('selectCatsByComponent');

        // bla bla bla

        $data['id'] = $id;
        $this->load->view('whatever/whatever',$data);
    }
    else
    {
        //Your normal page before posting
    }
}

现在您可以像这样访问视图中的 id 值

if(isset($id)) // if there is a $id loaded
{
    // Your view accoring to $id
}

注意:我在编写此代码时没有测试环境。所以代码不完整,可能有一些错误

于 2013-05-11T14:16:07.530 回答
0
You can use ajax with jquery onchange function, see the below example:
$("#bussiness").live('change',function(){
    var bus_id=$(this).val();
    $.ajax({
        url : "<?php echo base_url(); ?>setting/set_session/"+bus_id,
        success:function(res) {
            document.getElementById('output').HTML = res;
        }           
    });

});
于 2013-05-11T08:10:58.287 回答