Доступ к значению ключа возвращаемого массива из ответа ajax

#javascript #php #json #ajax

#javascript #php #json #ajax

Вопрос:

Здесь я возвращаю json из моего метода Ajax :

{«id_ac»:»32″,»mail_uniq_ac»:»mail@gmail.com «,»id_civ»:»2″}

Я хотел бы получить доступ к id_ac значению ключа в моем javascript, но на самом деле я не могу.

это мой контроллер 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 amp;amp; trim(data) != '')
                console.log(data);
            console.log(data['id_ac'])
        });
}
 

В :

 console.log(data); 
 

Выводите меня :

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

но console.log(data[‘id_ac’]); возвращает неопределенный

Комментарии:

1. Используйте console.log(data.id_ac) вместо этого.

2. Оба работают хорошо.

3. Учитывая var data = {"id_ac":"32","mail_uniq_ac":"mail@gmail.com","id_civ":"2"}; , console.log(data['id_ac']) будет вывод 32 … Боюсь, ваши данные выглядят не совсем так, как вы их разместили

Ответ №1:

Вы кодируете данные в JSON на стороне сервера, используя json_encode() , вам нужно декодировать их на стороне клиента, используя JSON.parse() , чтобы вы могли получить из него информацию, например :

 function showModalTempsPartenaire($id_ac){
    var $id_ac = $id_ac;
    $.post($url   "/ajax/get_acteur", {
        id_ac: $id_ac
    }, function (data) {
        if (data amp;amp; 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']);