Php 根据从其他DropDownList中选择的值填充第二个DropDownList

Php 根据从其他DropDownList中选择的值填充第二个DropDownList,php,javascript,ajax,codeigniter,drop-down-menu,Php,Javascript,Ajax,Codeigniter,Drop Down Menu,我正在尝试链接两个dropdownlist,具体取决于您从第一个dropdownlist中选择的值。 我不知道怎么做,所以如果你们能给我指出正确的方向那就太好了 我想做的是从第一个下拉列表中选择一个值,并根据其值在第二个下拉列表中显示一些选项 我尝试这样做: 1-当第一个dropdownlist的“OnChange”事件发生时,我调用一个javascript重定向到控制器中的方法,例如:index/mainController/firstMethod/selectedValue 2-控制器中使用

我正在尝试链接两个dropdownlist,具体取决于您从第一个dropdownlist中选择的值。 我不知道怎么做,所以如果你们能给我指出正确的方向那就太好了

我想做的是从第一个下拉列表中选择一个值,并根据其值在第二个下拉列表中显示一些选项

我尝试这样做:

1-当第一个dropdownlist的“OnChange”事件发生时,我调用一个javascript重定向到控制器中的方法,例如:index/mainController/firstMethod/selectedValue

2-控制器中使用url帮助器的方法提取“selectedValue”,以对第二个dropdownlist的值进行数据库搜索

3-相同的方法加载具有ddl的视图

这样做会丢失第一个ddl的选定值

我认为这不是正确的方法


所以,再一次,我需要一些帮助。

听起来你需要AJAX。我不再像以前那样关注这件事了,但一般的程序应该是这样的:

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script>
    $('#dropdown1').change(function(e) {
        $('#dropdown2').load('some_controller/some_function/'+this.value);
    });
</script>

<select name="dropdown1" id="dropdown1">
    <option value="1">option 1</option>
    <option value="2">option 2</option>
</select>

<select name="dropdown2" id="dropdown2"></select>
</body>
当用户在第一个下拉列表中选择某个内容时,会触发一个javascript方法。 此方法获取该值,使用它通过XMLHttpRequest获取页面查询。 XMLHttpRequest有一个回调,这样当数据返回时,就可以用该数据填充第二个下拉列表

这可能是最简单的,尽管有点奇怪,但它调用的PHP页面只返回新下拉列表的完整HTML。您只需执行document.getElementById'secondDropdown'.innerHTML=requestContent;之类的操作即可

如果你使用它会更容易

这里有一个例子

在主视图中,您可以看到如下内容:

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script>
    $('#dropdown1').change(function(e) {
        $('#dropdown2').load('some_controller/some_function/'+this.value);
    });
</script>

<select name="dropdown1" id="dropdown1">
    <option value="1">option 1</option>
    <option value="2">option 2</option>
</select>

<select name="dropdown2" id="dropdown2"></select>
</body>
您在脚本中说,每当下拉菜单更改其值时,您都会在其参数中使用id调用Ajax控制器函数。不要忘记包含jQuery文件

在控制器中,您将具有以下功能:

<?php
class some_controller extends Controller {

    function some_function($id) {
        $this->load->model('some_model');
        $data['options'] = $this->some_model->get_options($id);
        echo $this->load->view('view_dropdown2', $data, true);
    }
}
?>
因此,当调用此函数时,您可以使用下拉id调用模型函数,并使用选项回显视图。您必须将第三个参数设置为true,以便将视图作为var返回,而不是呈现

并且认为:

<?php foreach($options->result() as $option): ?>
    <option value="<?php echo $option->id; ?>"><?php echo $option->title; ?></option>
<?php endforeach; ?>
您只是在创建选项标记,因为选择标记已经在主视图中创建