Codeigniter:如何在不刷新的情况下将数组从控制器传递到视图


Codeigniter: How to pass array from controller to view without refresh

基本上,我在视图中有一个表单,启用了一个输入,禁用了多个输入(仅显示从唯一输入派生的信息)。

现在,我需要将此输入发送到控制器以进行查询,并将包含字段信息的数组发送回视图,但不刷新站点(因为我不能丢失我在该页中的进度)。

也许解决方案是使用javascript发送控制器的输入字段,并在函数中返回值数组刷新表单,但如何?

编辑:对不起,我的英语不好。

var input = $('#input').val();
$.ajax({
        type:"POST",
        url: <?php echo base_url().'controllername/action'?>
        data: {input : input},
        success: function(data){
        // this data should be contain an arra
        $('#where_to_insert_array').html();
         }

 });
  • 在控制器动作和在动作

    行动()函数{$data = $this->input->post('input');

  • 从$data上获取数据

  • 创建它的数组,然后回显它

    回声数组();}

最后我明白了如何动态地将数组从控制器传递到视图,这是代码:

视图javascript:

function getClient(){
if($('#cedula_cliente').val()){
    $.ajax({
        type : "post",
        url: "<?php echo base_url().'index.php/clientes/getClienteFactura'?>",
        cache: false,
        data : {cedula :  $('#cedula_cliente').val()},
        success : function(json){
            var obj=jQuery.parseJSON(json);
            if(obj[0]){
                $('#nombre_cliente').val(obj[0].nombre);
                $('#apellido1_cliente').val(obj[0].apellido1);
                $('#apellido2_cliente').val(obj[0].apellido2);
                $('#dir_cliente').val(obj[0].dir);
            }else{
                alert("Usuario no encontrado");
            }
        },
    });
}else{
    alert("Debe ingresar una cédula de usuario");
}

}

我使用obj[0],因为"cedula"是主键,它永远不会返回超过1行。

这是控制器函数:

public function getClienteFactura(){
    $cedula = $this->input->post('cedula');
    $query = $this->Client_model->getClientByCedula($cedula);
    echo json_encode($query); 
}   

谢谢你的回答,也许我应该在谷歌上看得更好,解决问题的关键是Json。