我一直致力于这个小应用程序,它将一个 AJAX GET请求发送到一个URL,该URL通过提供 JSON 回复PHP json_encode()
函数,当我尝试访问任何单个响应 JSON 时,它表示未定义,但整个响应的console.log()
为我提供了 VALID JSON !
我在这做错了什么?
更新代码: 代码使用Codeigniter编写。这是服务器端代码。
public function getByIdModel($id){
$sql = "SELECT * FROM `pop_proj` WHERE `id`= $id";
$query = $this->db->query($sql);
$result = $query->result();
return json_encode($result );
}
public function getByIdController() {
$this->load->model('Crud_model');
$query = $this->Crud_model->getById('394857');
echo json_encode($query);
}
答案 0 :(得分:4)
看起来data
是一个字符串,这意味着response
是双重编码的。
尝试var data = JSON.parse(JSON.parse(response));
如果有效,请转到服务器端代码并修复双重编码,然后在客户端删除双重解析。
我猜错getById
来电getByIdModel
两次来电json_encode
,我会将其从getByIdModel
中删除,这样您的数据就不会被编码两次。
关于整个json解析点,如果你的ajax请求期望json将dataType
参数设置为JSON,那么你的success函数中的响应将被解析为它们的JavaScript本机类型。