Как я могу разобрать объект JSON, содержащий массив объектов PHP? - PullRequest
1 голос
/ 23 января 2012

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

Это стиль PHP, который передается в формате JSON:

Array (
    [0] => stdClass Object (
        ['var1'] => val1
        ['var2'] => var2
    )
    [1] => stdClass Object (
        ['var1'] => val1
        ['var2'] => var2
    )
    [3] => stdClass Object (
        ['var1'] => val1
        ['var2'] => var2
    )
)

И передается ему следующим образом:

$response = json_encode( array( 'success' => true, 'posts' => $new_posts ) );

Где $new_posts - этомассив я пытаюсь разобрать.

Может кто-нибудь показать мне, как я могу получить доступ к этим переменным и их значениям?Спасибо.

Обновление: Вот строка JSON

Я пытаюсь получить доступ к ним из JavaScript.

Обновление 2: Когда я использую var posts = JSON.parse( response.posts );, я получаю следующую ошибку в консоли Google Chrome Javascript:

Uncaught SyntaxError: Unexpected end of input

Обновление 3: Я простопроверил Firebug, и кажется, что он возвращает это только для текста ответа JSON:

{"success":true,"posts":[]}

Ответы [ 3 ]

2 голосов
/ 23 января 2012

Я предполагаю, что вы хотите получить доступ через JavaScript, поскольку у вас это есть в PHP.При обратном вызове XHR успешно вставьте ответ в JSON.parse ();и получить доступ ко всему следующим образом

var data = JSON.parse(recievedData); // newer browsers, optionally you can use jQuery or eval()
console.log(data); // test;
// loop through all data
for(var i=0;i<data.length;++i) {
   console.log(data[i].var1); // expects val1
   console.log(data[i].var2); // expects val2
}
//access one bit
console.log(data[0].var1);

jQuery метод ответа (есть много способов достичь этого)

var data = jQuery.parseJSON(recievedData)
1 голос
/ 23 января 2012

Поскольку вы используете jQuery, лучшим подходом будет использование метода parseJSON:

var respObj = jQuery.parseJSON(response);

0 голосов
/ 23 января 2012

JSON является допустимым javascript, поэтому наиболее простым решением (при условии, что вы доверяете источнику json на 100%) является просто eval () его.

var response = eval(the_json);

if (response.success){
    var posts = response.posts
}

Если вы используете библиотеку, такую ​​как jQuery, есть встроенные методы для более безопасной оценки строк json.

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