从ajax响应访问返回数组的键值

时间:2019-04-18 14:18:48

标签: javascript php json ajax

这是我从Ajax方法返回的json:

  

{“ id_ac”:“ 32”,“ mail_uniq_ac”:“ mail@gmail.com”,“ id_civ”:“ 2”}

我想在我的JavaScript中访问id_ac键值,但实际上不能。

这是我的ajax控制器:

public function executeAjaxGetActeur(sfWebRequest $request){
        $id_ac = $request->getParameter('id_ac');

        $acteur = Doctrine_Core::getTable('Acteur')->findOneByIdAc($id_ac);

        return $this->renderText(json_encode($acteur->toArray()));
    }

这是我需要获取键值的Javascript

function showModalTempsPartenaire($id_ac){

        var $id_ac = $id_ac;
        $.post($url + "/ajax/get_acteur", {
            id_ac: $id_ac
        }, function (data) {
            if (data && trim(data) != '')
                console.log(data);
            console.log(data['id_ac'])
        });
}

The:

console.log(data); 

输出我:

{"id_ac":"32","mail_uniq_ac":"mail@gmail.com","id_civ":"2"}

但是console.log(data ['id_ac']);返回未定义

1 个答案:

答案 0 :(得分:4)

您正在使用json_encode()在服务器端将数据编码为JSON,需要在客户端使用JSON.parse()对其进行解码,以便能够从中获取信息,例如:

function showModalTempsPartenaire($id_ac){
    var $id_ac = $id_ac;
    $.post($url + "/ajax/get_acteur", {
        id_ac: $id_ac
    }, function (data) {
        if (data && trim(data) != '')
            data = JSON.parse(data);

        console.log(data['id_ac'])
    });
}

工作样本

var data = '{"id_ac":"32","mail_uniq_ac":"mail@gmail.com","id_civ":"2"}';
var obj = JSON.parse(data);

console.log(obj['id_ac']);