2017-04-17 74 views
0

在我看來,我有一個jQuery,它向我的控制器發送一個選擇下拉值,然後我調用模型中的一個函數來運行使用該值的查詢並獲取結果數組從數據庫中將顯示在我的視圖中的表格上。Codeigniter:在ajax成功獲取php數組

這裏是我的看法了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(); 
    } 
} 

的問題是,我似乎無法在我看來,使用數組$數據[「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。問題是,首先需要加載頁面,然後用戶需要從下拉列表中選擇一個選項,然後發送選擇以運行查詢,並將結果保存在變量中。

我該如何做這項工作? 感謝您的幫助。

回答

0

你應該修改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 
      } 
     }); 
    } 
});