我的观点是
<script type="text/javascript">
function kccbranchselect()
{
$.ajax({
type : 'POST',
data : 'addreceiptkccbranchid='+ $('#addreceiptkccbranch').val(),
url : '<?php echo base_url();?>index.php/ctl_dbcont/getmembersbybranch',
success : function(data){
$('#addreceiptddsmember').val(data);
}
});
}
</script>
<select id="addreceiptkccbranch" name="addreceiptkccbranch" onChange="kccbranchselect();" tabindex="1" >
<option value="">--SELECT--</option>
<?php foreach($branchlist as $value):?>
<option value="<?=$value['branch_id']?>"><?=$value['branch_name']?></option>
<?php endforeach; ?>
</select>
<select id="addreceiptddsmember" name="addreceiptddsmember" tabindex="1">
<?php foreach($member_by_branch as $row) { ?>
<option value = ""></option>
<?php } ?>
</select>
我的控制器是
function getmembersbybranch()
{
$this->load->model('mod_user');
$addreceiptkccbranchid = $_POST['addreceiptkccbranchid'];
$data['member_by_branch'] = $this->mod_user->member_receipt_dds($addreceiptkccbranchid);
redirect('view_addreceipts');
}
我通过选择另一个下拉选项生成下拉列表。 。我不能通过将url : '<?php echo base_url();?>index.php/ctl_dbcont/getmembersbybranch',
放在ajax中来访问控制器方法,为什么?
答案 0 :(得分:1)
这是一个简单的解决方案
AJAX请求
$.ajax({
type : 'POST',
data : 'addreceiptkccbranchid='+ $('#addreceiptkccbranch').val(),
url : '<?php echo site_url("ctl_dbcont/getmembersbybranch");?>',
success : function(data){
$('#addreceiptddsmember').val(data);
}
});
控制器
function getmembersbybranch()
{
$this->load->model('mod_user');
$addreceiptkccbranchid = $_POST['addreceiptkccbranchid'];
$data['member_by_branch'] = $this->mod_user->member_receipt_dds($addreceiptkccbranchid);
$this->load->view('member_by_branch',$data);
}
查看
<?php
if($member_by_branch){
foreach($branchlist as $value):
?>
<option value="<?=$value['member_id']?>"><?=$value['member_name']?></option>
<?php
endforeach;
}
?>
重定向无效。为下拉选项创建一个简单视图。
答案 1 :(得分:0)
这里的redirect
语句无效,因为它是一个AJAX请求。您必须从服务器发送html或json响应,您可以在客户端处理它。例如
$data['member_by_branch']=$this->mod_user->member_receipt_dds($addreceiptkccbranchid);
echo $data['member_by_branch']; //assuming its html
所以在客户端,您只需在回调方法中使用此语句。
$('#addreceiptddsmember').html(data);
答案 2 :(得分:0)
试试这个:
用这个函数替换你的js函数:
$("#addreceiptddsmember").live("change",function(){
var htmlString="";
$.ajax({
type:'POST',
data:'addreceiptkccbranchid='+ $('#addreceiptkccbranch').val(),
url:'ctl_dbcont/getmembersbybranch',
datatype:'application/json',
success:function(data){
$.each(data,function(i){
htmlString+="<option value='"+data[i].branch_id+"'>"+ data[i].branch_name +"</option>"
});
$('#addreceiptddsmember').html(htmlString);
}
});
});
在这里你必须使用htmlsting
并使用jquery附加到选定列表,它在php foreach中可用,因为你在视图代码中使用它。
也删除
redirect('view_addreceipts');
&安培;替换为:
echo json_encode($data);
exit;
控制器中的希望它有所帮助!