【问题标题】:Codeigniter: getting php array in ajax successCodeigniter:在ajax成功中获取php数组
【发布时间】:2017-04-18 13:19:27
【问题描述】:

在我看来,我有一个 jquery,它将一个选择下拉值发送到我的控制器,然后我在我的模型中调用一个函数来使用这个值运行一个查询并从数据库中获取一个结果数组,该数组将显示在在我看来是一张桌子。

这是我视图中的 jquery 部分

$('#idFamilia').change(function(){
    var clave = $("#idFamilia option:selected").text();
    if (clave != "Seleccione"){
        $.ajax({
            url: '<?php echo base_url(); ?>index.php/Proveedor/obtenerListaProveedorFamilia',
            method: 'POST',
            data: {
                clave: clave
            },
            success: function (returned) {
                console.log(returned);
                //Here I need to get the array listaproveedorfamilias 
            }
        });
    }
});

这是我的控制器部分的代码,我在其中发布值并调用模型函数

function obtenerListaProveedorFamilia(){
    $this->load->model('Proveedormodel');
    $clave = $_POST['clave'];
    $data['listaproveedorfamilia'] = $this->Proveedormodel->get_all_listaproveedorfamilia($clave);
    $data['_view'] = 'proveedor/index';
    $this->load->view('layouts/main',$data);
}

这是在我的模型中运行查询的函数。我已经使用 jquery 函数中的控制台日志验证了它是否有效

function get_all_listaproveedorfamilia($clave)
{
    $this->db->select('proveedor.razonSocial, proveedor.nombre1, proveedor.telefonoFijo1, proveedor.telefonoMovil1, proveedor.correoElectronico1, proveedor.tipo, familia.clave');
    $this->db->from('proveedor');
    $this->db->join('relacionproveedorfamilia', 'relacionproveedorfamilia.idProveedor = proveedor.id', 'inner');
    $this->db->join('familia', 'familia.id = relacionproveedorfamilia.idFamilia', 'inner');
    $this->db->where('familia.clave', $clave);
    $this->db->order_by('proveedor.razonSocial');
    $query = $this->db->get();
    if($query->num_rows() > 0){
        return $query->result_array();
    }
}

问题是在我看来,我似乎无法使用数组 $data['listaproveedorfamilia']。这是我已经尝试过的一些事情:

-循环遍历数组并获取每个值,这将在我的视图中作为表格附加。 (这只是我使用数组值的部分)

"<?php foreach($listaproveedorfamilia as $p){ ?>" +
    "<tr>" +
    "<td><?php echo $p['razonSocial']; ?></td>" +
    "<td><?php echo $p['nombre1']; ?></td>" +
    "<td><?php echo $p['telefonoFijo1']; ?></td>" +
    "<td><?php echo $p['telefonoMovil1']; ?></td>" +
    "<td><?php echo $p['correoElectronico1']; ?></td>" +
    "<td><?php echo $p['tipo']; ?></td>" +
    "<td><?php echo $p['clave']; ?></td>" +
    "</tr>" 
"<?php } ?>" 

-将数组保存在 javascript 数组变量中

var myArray = new Array();
myArray = <?php echo json_encode($listaproveedorfamilia); ?>

这些都不起作用。每次我在浏览器中加载视图时,我都会在控制台中看到以下错误消息。

A PHP Error was encountered
Severity: Notice
Message:  Undefined variable: listaproveedorfamilia

如果我理解正确,问题是页面加载后,它会尝试查找变量 listaproveedorfamilia。问题是首先需要加载页面,然后用户需要从下拉列表中选择一个选项,然后发送选择以运行查询,并将结果保存在变量中。

我怎样才能做到这一点? 感谢您的帮助。

【问题讨论】:

    标签: javascript php jquery ajax codeigniter


    【解决方案1】:

    你应该修改你的function obtenerListaProveedorFamilia()如下:

    function obtenerListaProveedorFamilia(){
        $this->load->model('Proveedormodel');
        $clave = $_POST['clave'];
        $data['listaproveedorfamilia'] = $this->Proveedormodel->get_all_listaproveedorfamilia($clave);        
       echo json_encode($data);
    }
    

    然后在 ajax 函数和 JSON.parse 中获取数据,然后使用 jQuery.each() 函数获取所有值来获取预期的数组值。

    $('#idFamilia').change(function(){
        var clave = $("#idFamilia option:selected").text();
        if (clave != "Seleccione"){
            $.ajax({
                url: '<?php echo base_url(); ?>index.php/Proveedor/obtenerListaProveedorFamilia',
                method: 'POST',
                data: {
                    clave: clave
                },
                success: function (returned) {
                    var returned = JSON.parse(returned);
    
                jQuery.each( returned.listaproveedorfamilia, function( i, val ) {                   
                  alert('razonSocial= '+ val.razonSocial + 'nombre1'+ val.nombre1 );
    
                });  
                    console.log(returned);
                    //Here I need to get the array listaproveedorfamilias 
                }
            });
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 2014-07-27
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多