Добрый день. Описываю ситуацию: Нужно распарсить JSON с помощью JavaScript. Делаю вот так:
var items = [];
jQuery.getJSON( url, function( json ) {
jQuery.each(json.posts, function(key, index) {
loc = index.custom_fields.map_coords[0];
items.push(loc);
});
});
console.log(items);
Если пытаюсь вывести console.log(items[0])
, то получаю undefined
.
Возможно уже глаз замылился, но я не понимаю как мне добраться до значений.
Дело в том, что эти значения потом должны использоваться, а я получаю undefined и ничего не могу с этим поделать.
Ну во-первых Ваш код асинхронный. Это значит, что в items будут значения только после того, как выполнится запрос.
То есть Ваш код должен будет выглядеть так:
var items = [];
jQuery.getJSON( url, function( json ) {
jQuery.each(json.posts, function(key, index) {
loc = index.custom_fields.map_coords[0];
items.push(loc);
});
console.log(items);
});
Во-вторых. Не факт что он у Вас выполниться - нужно добавить обработку ошибок:
var items = [];
jQuery.getJSON( url, function( json ) {
jQuery.each(json.posts, function(key, index) {
loc = index.custom_fields.map_coords[0];
items.push(loc);
});
console.log(items);
})
.fail(function() {
console.log( "error" );
})
Вопрос как работать с item дальше. Вариантов несколько - через обещания или callback-функции.
Пример с callback-функцией.
var items = [],
callbacks = $.Callbacks();
callbacks.add(function () {
console.log(items);
})
jQuery.getJSON( url, function( json ) {
jQuery.each(json.posts, function(key, index) {
loc = index.custom_fields.map_coords[0];
items.push(loc);
});
callbacks.fire();
console.log(items);
})
.fail(function() {
console.log( "error" );
})
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Проблема заключается в том, что происходит утечка памятиПеременная содержит данные, при уходе со страницы я выполняю destroy