Procesar json_encode($data) a través de ajax jquery

publicado por: Anonymous

Estoy trabajando con ajax, jquery y php; envío una solicitud ajax a php a través de post, de la siguiente forma:

function obtenermail() {
    //console.log($('#destinatario').val());
    var ced = $('#destinatario').val();
    $.ajax({
        type: "POST",
        data: { 'cedula': $('#destinatario').val()},
        url: "<?php echo site_url();?>"+"/roles/obtenercorreo", 
        success : function(data) {
            console.log(data);

        }
    });
}

en php tengo la siguiente función:

public function obtenercorreo(){
    if($this->session->userdata('logueado')){
        $ced = $this->input->post('cedula');
        $data = $this->persona_model->getPersonaced($ced);
        echo json_encode($data);
    }else{
        redirect('','refresh');
    }
}

La petición funciona correctamente, me muestra el arreglo de la siguiente manera:

[{"cedula":"1100253986","nombres":"SOTO CASTILLO LAURO HERNAN","mod_laboral":"CONTRATO COLECTIVO","email":""}]

Lo que no sé, es cómo obtener cada valor por separado, ya que si pongo

console.log(data[0])
console.log(data.cedula)
console.log(data['cedula'])

me devuelve undefined o una cadena vacía.

Mi pregunta es: ¿Cómo podría hacer para leer cada elemento individual?
es decir obtener la cedula, o el correo por separado

solución

Ahora mismo lo está tratando como si fuera una cadena, debes validar/procesar esa cadena como JSON (con JSON.parse) y entonces podrás acceder a los datos de manera sencilla.

Los cambios en el código JavaScript serían así:

$.ajax({
    type: "POST",
    data: { 'cedula': $('#destinatario').val()},
    url: "<?php echo site_url();?>"+"/roles/obtenercorreo", 
    success : function(data) {
        var datos = JSON.parse(data);
        console.log(datos[0].cedula);
        console.log(datos[0].email);
    }
});

Y ahora en la consola debería aparecer el valor correcto de la cédula y el correo.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *