2015-03-23 2 views
0

Я вызываю php-скрипт через AJAX, который возвращает json-кодированный объект.Не удается прочитать php JSON закодированные данные в js

$.post("php/getCamera.php", { 
     cam_id: identifier 
     }, function(data){ 
      console.log(data); 
      //var camera = JSON.parse(data); 
      var camera = $.parseJSON(data); 
      console.log(camera.name); 
      console.log(data['name']); 
      console.log(camera['name']); 
    }); 
} 

Вот мой PHP скрипт:

<?php 
    require 'Camera.php'; 

    $camera = new Camera(); 
    if(isset($_POST["cam_id"])) { 
     $cam_obj = $camera->getCamera($_POST['cam_id']); 
     $cam_obj_array = get_object_vars($cam_obj); 
     echo json_encode($cam_obj_array); 

    } 
?> 

А вот мой класс камеры:

class Camera 
{ 
    public $id; 
    public $name; 
    ... 

} 

В консоли Js, я вижу, закодированные данные, но я не могу получить доступ к его элементы:

{"id":"6","name":"camera 1"} 
undefined 
undefined 
undefined 
undefined 

ответ

2

добавить «JSON» в конце Вашего запроса пост:

$.post("php/getCamera.php", { 
     cam_id: identifier 
     }, function(data){ 
      console.log(data); 
      console.log(camera.name); 
      console.log(data['name']); 
      console.log(camera['name']); 
    }, 'json'); 
} 

Это сокращенная для полного АЯКС синтаксиса dataType: "json".

лучше использовать getJSON вместо поста (но затем, удалить «JSON» :)

+0

Спасибо тонну! Работает! – Zaxter

2

Попробуйте следующее:

console.log(data.name); 

Оказывается, из журнала, что данные уже объект JSON, и поэтому не нуждается в дальнейшем анализе.

+0

Это не работает, я все еще получаю не определено. – Zaxter

+1

Это не JSON. Он рассматривается как строка, потому что dataType не указан. –

Смежные вопросы