Обрабатывать json_encode ($data) через ajax jquery

Я работаю с ajax, jquery и php; я посылаю запрос ajax в php через post, следующей формы:

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

        }
    });
}

в php у меня есть следующая функция:

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

Просьба функционирует правильно, показывает мне договоренность следующего способа:

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

То, что я не знаю, это, как получать каждую стоимость по отдельности, так как, если я помещаю

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

он возвращает меня undefined или пустая цепь.

Мой вопрос: Как он мог бы делать, чтобы читать каждый индивидуальный элемент? а именно получать долговое обязательство, или почту по отдельности

4
задан 28.09.2016, 16:40
3 ответа

Прямо сейчас он относится к этому как будто это была цепь, ты должен санкционировать / обрабатывать эту цепь как JSON (с JSON.parse) и тогда ты сможешь соглашаться на данные о простом способе.

Изменения в коде язык сценариев JavaScript были бы такими:

$.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);
    }
});

И сейчас в консоли была бы должна появляться правильная стоимость долгового обязательства и почты.

4
ответ дан 24.11.2019, 14:47
  • 1
    Ok, большое спасибо, функция и # 243; в совершенство. – Juan Pinzón 01.03.2016, 22:55

Несмотря на уже имение решения, я даю тебе рекомендацию (carita счастливый).

Следующий код содержит призыв AJAX к унифицированному указателю ресурса, который ты желаешь, и решение, которое тебе выдвинул @Alvaro Montoro. Чтобы улучшать практику твоей просьбы, я рекомендую тебе добавлять к твоему коду только 2 линии и удалять 1.

Она первый линия, которую будет нужно добавлять, будет в Js, благодаря тому, что ты скажешь ему в jQuery, что ты ждешь тип содержимого (в этом случае JSON) так ты предотвращаешь parsear информацию благодаря тому, что ты это получаешь как таковой (в JSON).

Решение

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

Вторая линия - в стороне сервера, что он делает, состоит в том, чтобы возвращать в просьбе тип содержимого, который содержит ответ (JSON).

header('Content-Type: application/json');
echo json_encode($data);

Спасибо этот этот тип практик, ты можешь обнаруживать ошибки, как когда сервер тебе не ответит JSON, чтобы этим манипулировать различной формы, которая в вышеупомянутом случае, включила бы функцию ошибку AJAX.

5
ответ дан 24.11.2019, 14:47
  • 1
    Этот soluci и # 243; n est и # 225; очень хорошо – Alvaro Montoro♦ 03.03.2016, 05:16
  • 2
    Большое спасибо из-за того, что оно отвечает, всегда хорошо иметь м и # 225; s альтернативы, tendr и # 233; подарок, спасибо!!! – Juan Pinzón 03.03.2016, 07:32

Ты можешь уберегаться одна lГ-nea, таким образом:

success : function(data) {
        console.log(data.cedula);
        console.log(data.email);
    }
1
ответ дан 24.11.2019, 14:47