Чтение PHP-кодированного JSON в Javascript - PullRequest
1 голос
/ 20 июля 2011

Я создал объект JSON в php с помощью json_encode и пытаюсь отобразить некоторые значения этого объекта в javascipt через AJAX. У меня нет проблем с получением ответа от php, но я получаю 'undefined', когда пытаюсь получить доступ к любому значению ответа, используя нотацию JSON.

Фрагмент кода:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   var response = xmlhttp.responseText;
   alert(response);
   alert(response.data);
}

Выход:

{"data":[{"cheese":"pork"},{"cheese":"chicken"}]} // Yes, I'm hungry right now.
undefined

РЕДАКТИРОВАТЬ: Спасибо всем за ответы. Хотел бы я поставить вам галочку, но я выбрал самый полезный ответ.

Ответы [ 5 ]

2 голосов
/ 20 июля 2011

Вы должны разобрать JSON.Это можно сделать с помощью простого вызова eval, но это можно сделать, только если вы полностью доверяете возвращающемуся серверу, поскольку он может заставить ваш скрипт выполнять все.

 var data = eval('('+response+')');

Способ, который я рекомендовал бы, еслииспользовать json2.js, небольшую библиотеку javascript, которая работает быстрее и будет обрабатывать данные для вас.

var data = JSON.parse(response);

Ее можно получить от https://github.com/douglascrockford/JSON-js

1 голос
/ 20 июля 2011

Похоже, ответом является простой текст.Попробуйте это:

var response = xmlhttp.responseText;
var data = new Function("return "+xmlhttp.responseText)();
1 голос
/ 20 июля 2011

Вы должны преобразовать ответ в объект js.

Самый простой способ - использовать eval ():

eval('var result = ' +response);
alert(result.data);
1 голос
/ 20 июля 2011
var response = xmlhttp.responseText

это не объект JSON. Это простой текст. Например, используйте var myObject = eval('(' + myJSONtext + ')');, чтобы получить JSON (eval is evil:)

1 голос
/ 20 июля 2011

Вам нужно проанализировать JSON:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   var jdoc = JSON.parse(xmlhttp.responseText);
   alert(jdoc.data[0].cheese);
}

Включить json2.js в старых браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...