0

嘿伙计们,我在从 javascript 调用控制器方法时遇到了麻烦,请帮助。.

我的看法是

<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 来访问控制器方法,为什么?

4

3 回答 3

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;
}
?>

重定向将不起作用。为下拉选项创建一个简单的视图。

于 2013-04-03T07:25:01.470 回答
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;

在控制器中

希望有帮助!

于 2013-04-03T08:10:52.553 回答
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);
于 2013-04-03T07:10:04.380 回答