AJAX响应中的JSON.parse()表示未定义,为什么?

时间:2018-01-12 19:19:58

标签: php json ajax

我一直致力于这个小应用程序,它将一个 AJAX GET请求发送到一个URL,该URL通过提供 JSON 回复PHP json_encode()函数,当我尝试访问任何单个响应 JSON 时,它表示未定义,但整个响应的console.log()为我提供了 VALID JSON The JSON issue

我在这做错了什么?

更新代码: 代码使用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);
}

1 个答案:

答案 0 :(得分:4)

看起来data是一个字符串,这意味着response是双重编码的。

尝试var data = JSON.parse(JSON.parse(response));

如果有效,请转到服务器端代码并​​修复双重编码,然后在客户端删除双重解析。

我猜错getById来电getByIdModel两次来电json_encode,我会将其从getByIdModel中删除,这样您的数据就不会被编码两次。

关于整个json解析点,如果你的ajax请求期望json将dataType参数设置为JSON,那么你的success函数中的响应将被解析为它们的JavaScript本机类型。