我正在开发一个在codeigniter上使用动态依赖下拉列表的项目。对不起,我对编码很新。我有一个表获取正在运行的服务的ID,但获取依赖于该服务的另一个表是不起作用的。我在谷歌浏览器中使用了控制台工具,并显示它获取了另一个表的选项值,但它在我的浏览器中显示了一个空白的选择输入。
shows the option value in my dbase
这是我的代码:controller:
public function get_procedures()
{
$servID = $this->input->post('servID');
$result = $this->Laboratory_Model->get_all_products1($servID);
if(count($result)>0)
{
$pro_select_box = '';
$pro_select_box .= '<option value="">Select s</option>';
foreach ($result as $rows) {
$pro_select_box .='<option value="'.$rows->itemNum.', '.$rows->prodName.' ">'.$rows->prodName.'</option>';
}
echo $pro_select_box;
}
}
JS:
$('#servID').on('change', function(){
var servID = $(this).val();
if(servID == '')
{
$('#servPRO').attr('disabled', true);
}
else
{
$('#servPRO').attr('disabled', false);
$.ajax({
url:"<?php echo base_url() ?>get_procedures",
type: "POST",
data: {'servID' : servID},
dataType: 'html',
success: function(data){
$('#servPRO').html(servID);
},
error: function(){
alert('Error occur...!!');
}
});
}
});
实验室模型:
public function get_all_products1($servID){
$query = $this->db->get_where('laboratory', array('servID' => $servID));
if($query->num_rows() > 0){
return $query->result();
} else {
return NULL;
}
}
的观点:
<select name ="servID" id="servID" class="form-control" data-live-search="true">
<option value = 'null'>-Select Category-</option>
<?php foreach($service as $rows): ?>
<option value = '<?php echo $rows->servID?>'><?php echo $rows->service_cat?></option>
<?php endforeach ?>
</select>
</select> <select class="form-control" name="servPRO" id="servPRO">
</select>
答案 0 :(得分:0)
你的ajax success 方法的请求参数输入错误,提供的变量应该是 data 而不是 servID :
$.ajax({
url:"<?php echo base_url() ?>get_procedures",
type: "POST",
data: {'servID' : servID},
dataType: 'html',
success: function(data){
$('#servPRO').html(data); // change servID to data
},
error: function(){
alert('Error occur...!!');
}
});
修改强>
更改默认 ServID 选择
<option value='null'>-Select Category-</option>
到
<option value=''>-Select Category-</option>
因为'null'
不等于''
。
并设置下拉列表的初始状态:
$('#servPRO').attr('disabled', $('#servID').val() == '' ? true : false ); // set initial state
$('#servID').on('change', function(){
var servID = $(this).val();
if(servID == '')
{
$('#servPRO').attr('disabled', true);
}
else
{
$('#servPRO').attr('disabled', false);
$.ajax({
url:"<?php echo base_url() ?>get_procedures",
type: "POST",
data: {'servID' : servID},
dataType: 'html',
success: function(data){
$('#servPRO').html(data); // changed servID to data
},
error: function(){
alert('Error occur...!!');
}
});
}
});