下拉选择onChange,使用CodeIgniter中的参数重定向到url

时间:2013-05-11 07:20:24

标签: php forms codeigniter

如何在index.php/backend/categories/get_categories/$id下拉列表中访问此网址<select>

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

我想要的是,一旦我从下拉列表中选择一个选项,我希望它提交并重定向到相同的网址,但是使用<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>

如何使它成为可能?

2 个答案:

答案 0 :(得分: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
}

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

答案 1 :(得分: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;
        }           
    });

});