значения getJSON каждый

0

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

В настоящее время я настроен таким образом:

$.getJSON('works/api', function(r) {

    $.each(r, function(i, article) {
        console.log(article);
    });

});

И у works/api есть JSON:

{"data":[{"title":"A Quick Perspective of the Future","description":"Installation view, Site Gallery, Sheffield"},{"title":"132Kv PL-16","description":"Single colour offset print 700 x 480mm"},{"title":"LKA V.2","description":"Installation view B&B Gallery, Sheffield"},{"title":"LKA V.2","description":"Installation view B&B Gallery, Sheffield"},{"title":"Hyperbolic Paraboloid Roof","description":"Single colour offset print 700 x 480mm"},{"title":"Road and Rail Links Between Sheffield and Manchester","description":"Gelatin silver print"}]}

Что создано:

<?php 

$data = $pages->find('works')->children()->visible();

$json = array();

$json['data']  = array();

foreach($data as $article) {

  $json['data'][] = array(
    'title' => (string)$article->title(),
    'description' => (string)$article->description(),
  );

}

echo json_encode($json);

?>

Я пытаюсь получить значения "title" и "description" из JSON, поэтому я могу добавить их в div на сайте.

Теги:

3 ответа

2
Лучший ответ

r - объект с массивом, чей ключ - data, поэтому вам нужно выполнить итерацию r.data

$.each(r.data, function(i, article) {
    console.log(article);
});
  • 0
    Спасибо тебе большое за это. Не могли бы вы кратко объяснить настройку для этого, чтобы я понял в следующий раз? Итак, какой бы ни был ключ, он должен быть objectName.data, тогда я бессмыслен, а article - это то, что я хочу назвать?
  • 1
    @rdck i - это индекс текущей статьи в массиве ... поэтому, если вы хотите выполнить расчет на основе позиции, его можно использовать в большинстве случаев, но он не очень полезен.
1

Как это:

$.getJSON('works/api', function(r) {
    r.data.forEach( function(d) {
       console.log(d.title);
    });
});

т.е. сначала получить часть data, а затем перебрать все объекты в массиве data и распечатать их title.

Или, с $.each:

$.getJSON('works/api', function(r) {
    $.each(r.data, function(d) {
       console.log(d.title);
    });
});
1

Какая часть неудачна? Предполагая, что ваш getJSON работал, и вы действительно получаете действительный r, то, возможно, вам нужно сделать $.each r.data вместо r.data, потому что r просто будет объектом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню