我需要帮助制作包含数据库数据的级联下拉列表
我找到了一个关于此的教程 和 我试过这个
控制器:
function ajax_call() {
if(!empty($_POST['table'])){
if ($_POST) {
$table = $_POST['table'];
$arrYear = $this->my_model->get_categories($table);
foreach ($arrYear as $years) {
$arrFinal[$years->category2 = $years->category2;
}
echo "<p>2nd Category:<br>";
echo form_dropdown('year',$arrFinal);
echo "</p><br>";
}
else
{
echo "<p>2nd Category:<br>";
echo form_dropdown('year','');
echo "</p><br>";
}
}
}
我的观点:
$options = array(
'' => 'Select',
'category_one' => 'Category 1',
'category_two' => 'Category 2',
);
echo form_error('table');
echo "<p>Category:<br> ";
echo form_dropdown('table', $options, $this->input->post('table'), 'id="table"');
echo "</p><br>";
我的观点中的脚本:
<script type="text/javascript">
$(document).ready(function(){
$('#table').change(function(){
var selTable = $(this).val(); // selected name from dropdown #table
$.ajax({
url: "ajax_call", // or "resources/ajax_call" - url to fetch the next dropdown
async: false,
type: "POST", // post
data: "table="+selTable, // variable send
dataType: "html", // return type
success: function(data) { // callback function
$('#year').html(data);
}
})
});
});
</script>
我的模特:
function get_categories($table) {
$this->db->select('category2')->from($table);
$query = $this->db->get();
return $query->result();
}
我唯一的问题是第二个下拉列表在加载时在页面上不可见,并且仅在我在第一个下拉列表中选择时才会显示。
如何在不选择第一个下拉列表的情况下将其设置为显示在页面上? 有人可以帮忙吗?
答案 0 :(得分:1)
好的,我无法弄清楚如何做我想做的事。因此,我搜索了互联网的深层部分,发现了这个实际上我需要的小教程。
http://supundharmarathne.wordpress.com/2013/03/13/simple-ajax-drop-down-filtering-with-codeigniter/
答案 1 :(得分:0)
这种情况正在发生,因为只有在表更改$('#table').change(function(){...})
后才会触发填充表的ajax调用。尝试填充表格而不等待这样的改变;也许在$(document).ready(function(){...})
答案 2 :(得分:-1)
您在代码中添加了一个完全过时的if ($_POST)
。您已经在检查$ _POST中的变量是否存在,因此在此之后它永远不会为空。这导致您的ELSE语句与第二个IF相关,而不是第一个。
function ajax_call() {
if(!empty($_POST['table'])){
$table = $_POST['table'];
$arrYear = $this->my_model->get_categories($table);
foreach ($arrYear as $years) {
$arrFinal[$years->category2 = $years->category2;
}
echo "<p>2nd Category:<br>";
echo form_dropdown('year',$arrFinal);
echo "</p><br>";
}
else
{
echo "<p>2nd Category:<br>";
echo form_dropdown('year','');
echo "</p><br>";
}
}
这就是始终正确缩进代码的原因。