[英]call controller from javascript on view using codeigniter
大家好,我在从javascript pls help调用控制器方法时遇到麻烦。 。
我的看法是
<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');
}
我通过选择另一个下拉选项生成一个下拉菜单。 。 我无法通过在ajax中放置url : '<?php echo base_url();?>index.php/ctl_dbcont/getmembersbybranch',
访问控制器方法url : '<?php echo base_url();?>index.php/ctl_dbcont/getmembersbybranch',
,为什么?
这是一个可行的简单解决方案
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;
}
?>
重定向将不起作用。 为下拉选项创建一个简单的视图。
此处的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);
尝试这个:
用以下函数替换您的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;
在控制器中
希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.