Ошибка при получении json из php
Hello World, товарищи!:victory:
Имею в php объект, нужно его передать в js. Для этого в php его обрабатываю json_encode. В итоге в js я получаю json в таком виде: var people = '{ "petrov" : { "ot":1, "do":5 }, "smirnov" : { "ot":1, "do":5 } }'; Если в js пытаться делать JSON.parse(people), то выходит ошибка: "SyntaxError: Unexpected token o in JSON at position 1" . И в консоли показывает, что ругается на [object Object] Пробовал убирать JSON.parse , но тогда я не могу значения получить ни так people["petrov"]["ot"] ни так people.petrov.ot Помогите разобраться что делать то? |
Цитата:
Цитата:
Хорошо было бы, если бы вы показали скрипт, которым получаете ответ |
JSON.stringify(people) выдает
"{\"petrov\":{\"ot\":\"4\",\"do\":\"5\"},\"smirnov \":{\"ot\":\"5\",\"do\":\"6\"}}" JSON.parse(JSON.stringify(people)) выдает {"petrov":{"ot":"4","do":"5"},"smirnov":{"ot":"5", "do":"6"}} console.log(people.petrov); уже undefined При попытке получить значения выдает Uncaught TypeError: Cannot read property 'ot' of undefined Передаю без ajax запросов. С объектом работаю в шаблоне на php. И в шаблоне же задаю. <script> var people = '<?=json_encode($people) ?>'; </script> А js который работает с переменной people , он подключается в подвале и это отдельный файл,значение туда приходят. |
ishurgaya,
А если возвратить просто строку? Без json_encode ? |
Цитата:
ishurgaya, вы объект превращаете в строку, отсюда и ошибка. <script> var people=<?=json_encode($people);?>; </script>Если в скрипт передаете строку, то декодируйте её (JSON.parse) перед использованием. |
Nexus,
Что-то я вас не понял. Цитата:
Цитата:
Цитата:
|
Dilettante_Pro, я также не понял, что не поняли вы :)
Если ТС будет пытаться вставлять данные так (без кодирования в json): var people='<?php =$people;?>';То в итоге получит это: var people='Notice: ~description Array';*Notice будет выведен, если вывод ошибок включен. Сейчас он вставляет данные так: var people='<?php =json_encode($people);?>';Получает переменную типа string, т.к. json обернут в апострофы. Чтобы все заработало нужно либо избавиться от апострофов, либо в js парсить json из переменной people. |
Nexus,
насчет json_encode вы, конечно, совершенно правы Цитата:
|
Часовой пояс GMT +3, время: 09:50. |