2013-04-03 41 views
0

嘿家伙我面临麻烦调用控制器方法从javascript pls帮助。 。来自javascript的呼叫控制器查看使用codeigniter

我的观点是

<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

那不是控制器而只是类控制器内的一个函数。 –

+0

是的,它的权利。 。我该如何从javascript调用这个函数@Kaii – Jay

+0

你已经在呼唤它了!但是,在ajax代码中重定向的是什么? – itachi

回答

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

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

+0

第二个下拉选项是在同一个视图上第一个下拉,这意味着当我从第一个下拉菜单中选择一个值时,这个页面应该再次加载。 。 。 – Jay

+0

我可以在'$ this-> load-> view('// same view here',$ data)中调用相同的视图;'或者我应该做一个新的视图@raheel shan – Jay

+1

这是很好的答案,但通过'url: '<?php echo site_url(“ctl_dbcont/getmembersbybranch”);?>','我不能去'getmembersbybranch' – Jay

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; 

控制器

希望它能帮助!

+0

仍然无法访问网址:url:'ctl_dbcont/getmembersbybranch', – Jay

+0

ajax不适合我。 。 '$('#addreceiptkccbranch')。val(),'这个数据不会传递给'url:url:'ctl_dbcont/getmembersbybranch',' – Jay

+0

@Jay我很抱歉这是一个错字现在测试这个并添加警报“成功”)在ajax的成功功能 – sandip