我正在使用 ajax、jquery 和 php;我通过 post 向 php 发送 ajax 请求,如下所示:
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'])
返回我未定义或空字符串。
我的问题是:我怎样才能阅读每个单独的项目? 也就是单独获取cedula,或者邮件
现在它将它视为一个字符串,您需要将该字符串验证/处理为 JSON(使用
JSON.parse
),然后您可以轻松访问数据。JavaScript 代码中的更改将如下所示:
现在 ID 和邮件的正确值应该出现在控制台中。
尽管已经有了解决方案,但我给你一个建议(笑脸)。
以下代码包含对所需 URL 的 AJAX 调用以及@Alvaro Montoro 提出的解决方案。为了提高您请求的实用性,我建议您在代码中只添加 2 行并删除 1 行。
要添加的第一行将在 Js 中,因为您将告诉 jQuery 您期望什么类型的内容(在本例中为 JSON),因此您避免解析数据,因为您收到的是原样(在 JSON 中)。
解决方案
第二行在服务器端,它的作用是返回请求中响应(JSON)中包含的内容类型。
由于这种做法,您可以检测到错误,例如服务器没有响应 JSON 以以不同方式处理它,在这种情况下,AJAX错误功能将被激活。
您可以像这样保存一行: