我正在尝试根据您从第一个下拉列表中选择的值链接两个下拉列表。 我不知道如何做到这一点,所以如果你们能指出我的方向是正确的。
我想要做的是从第一个下拉列表中选择一个值,并根据其值显示第二个下拉列表中的一些选项。
我尝试这样做:
1 - 当第一个下拉列表的“OnChange”事件发生时,我调用一个重定向到控制器中的方法的javascript(例如:index / mainController / firstMethod / selectedValue)。
2 - 控制器中使用url helper的方法提取“selectedValue”来对第二个下拉列表的值进行数据库搜索。
3 - 相同的方法加载视图(具有ddl的视图)
这样做我丢失了第一个ddl的选定值。
我认为这不是正确的做法。
所以,再一次,我需要一些帮助。
答案 0 :(得分:0)
听起来你想要AJAX。我不像以前那样依旧,但一般程序应该是这样的:
当用户在第一个下拉列表中选择某些内容时,它会触发一个javascript方法。 此方法获取该值,使用它来通过XMLHttpRequest GET查询页面。 XMLHttpRequest有一个回调函数,这样当数据返回时,您可以使用该数据填充第二个下拉列表。
让它调用的PHP页面返回新的下拉列表的完整HTML可能是最简单的(尽管有点奇怪)。他们只需要执行document.getElementById('secondDropdown').innerHTML = requestContent;
。
答案 1 :(得分:0)
如果您使用jQuery,则会更容易。
这是一个例子。
在主视图中你会有这样的一些:
<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>
您在脚本中说,每当下拉列表更改其值时,您调用(在Ajax中)一个控制器函数,其参数中包含id。不要忘记包含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调用模型函数,并使用选项回显视图。您必须将第3个参数设为true,以便视图作为var返回并且不会呈现。
在视图中:
<?php foreach($options->result() as $option): ?>
<option value="<?php echo $option->id; ?>"><?php echo $option->title; ?></option>
<?php endforeach; ?>
您只是创建选项标签,因为已在主视图中创建了选择标记。