Я борюсь с некоторыми 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 на сайте.
r
- объект с массивом, чей ключ - data
, поэтому вам нужно выполнить итерацию r.data
$.each(r.data, function(i, article) {
console.log(article);
});
Как это:
$.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);
});
});
Какая часть неудачна? Предполагая, что ваш getJSON работал, и вы действительно получаете действительный r
, то, возможно, вам нужно сделать $.each
r.data
вместо r.data
, потому что r
просто будет объектом.
i
- это индекс текущей статьи в массиве ... поэтому, если вы хотите выполнить расчет на основе позиции, его можно использовать в большинстве случаев, но он не очень полезен.