通过Codeigniter Ajax在视图中显示数据时未定义的变量

时间:2019-06-17 19:52:30

标签: php ajax codeigniter

我正在尝试从控制器发送数据以通过Ajax在Codeigniter中查看,但是我一直收到此错误:

  

遇到PHP错误   严重程度:注意   消息:未定义的变量:usuario   文件名:views / buscar_view.php   行号:92

这是我通过Ajax向控制器发送数据的视图,它也显示 整个过程后的信息

//buscar_view:


<?php
    $diva="<div id='tabla6' align=center>";
    $divc="</div>";
    $salto_linea="<br><br>";
    echo $diva;
    echo form_label('Ingrese su Cedula:').$salto_linea;
    echo form_input(array('type'=>'text', 'name'=>'cedula','required'=>'true','id' => 'ccedula')).$salto_linea;
    echo form_submit(array('value'=>'Buscar','id' =>'enviarcedula'));
    echo form_close();
    echo $divc;
    ?>

//Ajax request

        $(document).ready(function(){
            $("#enviarcedula").click(function(){
                var cedula=$("#ccedula").val();
                peticionUsuario(cedula);

            });
        });

        function peticionUsuario(cedulajs)
        {
            var parametros={
                "cedula":cedulajs
            }

            $.ajax({
                data:parametros,
                type:"post",
                url:'<?php echo base_url();?>usuario_controller/recibePeticionUsuarioAjax',
                success: function(respuesta){
                    alert("Informacion  de usuario");



            }


            });

        }

//Displaying data in the view



<?php
    foreach ($usuario as $u) {


    //forma nueva
        echo   "<tr>
        <td>{$u->cedula}</td>
        <td>{$u->nombre}</td>
        <td>{$u->apellido}</td>
        <td>{$u->direccion}</td>
        <td>{$u->telefono}</td>
        </tr>" ;    
    }
    echo '</table>';
    echo '</div>';

     ?>
//controller


<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class usuario_controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model("usuario_model");
    }


    public function recibePeticionUsuarioAjax()
    {
        if($this->input->post())
        {
            $cedula=$this->input->post('cedula');
            $usuario=$this->usuario_model->buscarUsuario($cedula);
            $this->load->view("buscar_view" , compact('usuario'));  

        }

    }
}


//model

<?php
defined('BASEPATH') OR exit('No direct script access allowed');


class usuario_model extends CI_Model

{

    public function buscarUsuario($cedula)
    {

          $query=$this->db->get_where('usuario',$cedula);
          return $query;
    }

}

?>

我该如何解决?我已经尝试了很多,没有任何改变

2 个答案:

答案 0 :(得分:0)

这是行不通的,因为在您的模型中您不会返回查询结果。使用这个:

public function buscarUsuario($cedula)
{
      $query=$this->db->get_where('usuario',$cedula);
      return ($query->num_rows()) ?$query->result():false; // returns false, if query has no results
}

然后将控制器更改为这些行

$data['usuario']=$this->usuario_model->buscarUsuario($cedula);
$this->load->view("buscar_view" , $data);

,您认为类似:

if($usuario==false){echo 'no records found'; }
else{
  foreach ($usuario as $u) {
    //forma nueva
    // your code
  }   
}

答案 1 :(得分:0)

  

在您的控制器中更改

 if($this->input->post())
            {
                $cedula=$this->input->post('cedula');
                $usuario=$this->usuario_model->buscarUsuario($cedula);
                $this->load->view("buscar_view" ,array ('usuario'=>$usario);

            }