下拉选择onChange重定向到url,并在CodeIgniter中添加参数


Dropdown select onChange redirect to url with a parameter in CodeIgniter

如何在<select>下拉onChange中访问此url index.php/backend/categories/get_categories/$id

我的意思是,如果我进入index.php/backend/categories/get_categories/1,它将输出一个表,其中包含component id 1下的所有类别。

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

使用CodeIgniter FORM helper生成下拉列表:

<?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>

如何使之成为可能?

如果我没看错的话,你是在问这样的问题;

在控制器;

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
}

注意:当我写这段代码时,我没有测试环境。所以代码并不复杂,可能会有一些错误

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;
        }           
    });
});
相关文章: