【问题标题】:How to visualize a codeigniter array from a query on my view?如何从我的视图上的查询中可视化 codeigniter 数组?
【发布时间】:2017-04-11 18:48:53
【问题描述】:

在我的模型上,我有以下函数,它是对内连接 3 个表的查询

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

$clave 值是从选择下拉列表中检索的字符串,我使用 ajax 将其发送到我的控制器

我认为发送 $clave 值的 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
                }
            });
        }
    });

这是来自我的控制器的代码,我在其中使用 clave 值并在我的控制器中调用函数

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 函数 $('#idFamilia').change(function(){});

-从视图中获取数组并在浏览器的控制台上查看

var test = <?php echo json_encode($listaproveedorfamilia); ?>;
console.log(test);

-尝试将 print_r 附加到 pre 标记

$('#prueba').append('<?php print_r($listaproveedorfamilia) ?>');

使用这两个选项,我的视图中出现以下 PHP 错误

A PHP Error was encountered
Severity: Notice
Message:  Undefined variable: listaproveedorfamilia
Filename: proveedor/index.php

页面加载后会立即出现此错误,但它应该等待用户从选择下拉列表中选择一个选项,然后使用该选项构建查询。我该如何解决这个问题并检查我的数组的内容?

【问题讨论】:

  • 在控制器中尝试var_dump($data['listaproveedorfamilia']);。那里显示了什么?
  • @Xidh 对不起,我怎样才能从控制器中进行 var_dump?我在哪里可以看到输出?
  • 只需将var_dump 放在创建$data['listaproveedorfamilia'] 之后并添加exit 以便您可以阅读它

标签: javascript php jquery mysql codeigniter


【解决方案1】:

您需要将成功方法添加到您的 ajax 调用中。这是在服务器上创建的数据将被发送到的地方。

$('#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);
            }
        });
    }
});

您可以使用浏览器的 Web 开发工具查看 javascript 控制台记录的内容。

因为我们不知道视图文件包含什么,所以很难评论会发生什么。

通常使用 ajax 调用返回 html,然后使用 $("some_selector").html() 或各种其他 DOM 操作方法将返回放入 DOM 以更新当前浏览器屏幕。

另一种“可视化”返回的方法是将其简单地附加到屏幕上已有的内容上。这不太可能是您最终想要的。但是您将能够看到返回的内容。

把成功函数改成这个

success: function (returned) {
    $('body').append(returned);
}

【讨论】:

  • 谢谢,我能够看到数组,并且页面的整个 html 代码也显示在 conse 中,不知道为什么,但至少我知道查询有效。
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 2020-01-24
  • 1970-01-01
  • 2013-09-26
相关资源
最近更新 更多