Я делаю проект с API-интерфейсом wikipedia media. Я запрашиваю API с помощью JQuery. Следующий запрос работает при проверке консоли developper в Chrome, как показано в этом codepen http://codepen.io/jowze/pen/NNZNKY/?editors=1010Uncaught TypeError: Не удается прочитать свойство 'foo' undefined
$.ajax({
url:'https://en.wikipedia.org/w/api.php',
data: { action : 'query', generator: 'search', gsrnamespace : '0', gsrlimit : '10', prop : 'extracts', pilimit: 'max',
exintro: '', explaintext: '', exsentences: '1' , exlimit: 'max' , gsrsearch: 'Richard Feynman', format: 'json'},
dataType: 'jsonp',
success: function (x) {
var result = x.query.pages;
for (var i in result) {
var item = result[i].pageid;
console.log(item);
}
}
});
Этот код работает, когда цикл по результату с для ... в цикле. При написании такой же код пытается получить доступ к переменной результата, как показано ниже, консоль печатает Uncaught TypeError: Cannot read property 'pageid' of undefined
success: function (x) {
var result = x.query.pages;
var item = result[0].pageid;
console.log(item);
}
});
Любая идея, почему это происходит? Почему невозможно получить доступ к каждому ключу объекта JSON через result[0]
, result[1]
, ..., result[n]
?
Ключи кажутся строками (результаты - словарь). Не могли бы вы добавить вывод 'console.log (result)'? – martianwars
Вы не можете получить к ним доступ через 'index', потому что' x.query.pages' возвращает вам объект JSON, а не тип 'Array'. Доступ к элементам 'Array' можно получить только с помощью' index'. – vijayP
typeof (x.query.pages) дает объект, а не массив ... – gkb