codigniter:如何使用jquery将数组从控制器传递到视图

时间:2015-10-07 14:45:03

标签: jquery codeigniter-3

已经我的控制器索引方法加载了一个参数,其中有两个下拉字段,当我选择第一个然后我用jquery ajax获取第二个的数据然后当我选择第二个然后我需要传递另一个数组list_ByBatch方法。

我的控制器是:

public function index() {
    $data['round'] = $this -> AttendanceModel -> get_round();

    $this->load->view('common/header'); 
    $this->load->view('common/menu');
    $this->load->view('attendance/attendance', $data);
    $this->load->view('common/footer');
}

public function list_ByBatch(){
    $batch=$this->input->post('batchid',TRUE);      
    $list['trainee']=$this->AttendanceModel->get_traineeList($batch);
    if(!empty($list['trainee'])){
        return $list['trainee'];
    }
}

脚本:

   <script type="text/javascript">
    $(document).ready(function() { 
        $("#round").change(function(){
            /*dropdown post */
            $.ajax({
            url:"<?php echo base_url(); ?>index.php/attendance/batch_ByRound",    
            data: {round: $(this).val()},
            type: "POST",
            success: function(data){ 
                $("#batch-list").html(data);
            }
            });
        });

        $("#batch-list").change(function(){
            /*dropdown post */
            $.ajax({
            url:"<?php echo base_url(); ?>index.php/attendance/list_ByBatch",    
            data: {batchid: $(this).val()},
            type: "POST",
            success: function(data){ 
                $("#traineeList").html(data);
                $("#subTotal").html("Total: " + $('#traineeList tr').length.toString());
                document.getElementById("classHour").defaultValue = "4";
            }
            });
         });

    });

</script> 

如何将'list_ByBatch'中的数组传递给查看#batch-list更改函数执行时已加载的页面。

1 个答案:

答案 0 :(得分:2)

您应该使用echojson_encode

,而不是返回
public function list_ByBatch(){
    $batch=$this->input->post('batchid',TRUE);      
    $list['trainee']=$this->AttendanceModel->get_traineeList($batch);
    if(!empty($list['trainee'])){
        echo json_encode($list['trainee']);
    }
}