Возможно, потому что на второй итерации item
не имеет свойства image
, поэтому item.image[3]['#text']
приведет к его аварийному завершению.
{
"toptracks": {
"track": [{
"name": "Someone Like You",
"duration": "284",
"playcount": "1033",
"mbid": "",
"url": "http:\/\/www.last.fm\/music\/Adele\/_\/Someone+Like+You",
"streamable": {
"#text": "1",
"fulltrack": "0"
},
"artist": {
"name": "Adele",
"mbid": "b0335a95-8a12-4c71-8149-5054ec847d04",
"url": "http:\/\/www.last.fm\/music\/Adele"
},
"image": [{
"#text": "http:\/\/userserve-ak.last.fm\/serve\/34s\/55125087.png",
"size": "small"
},
{
"#text": "http:\/\/userserve-ak.last.fm\/serve\/64s\/55125087.png",
"size": "medium"
},
{
"#text": "http:\/\/userserve-ak.last.fm\/serve\/126\/55125087.png",
"size": "large"
},
{
"#text": "http:\/\/userserve-ak.last.fm\/serve\/300x300\/55125087.png",
"size": "extralarge"
}],
"@attr": {
"rank": "1"
}
},
{
"name": "Somebody To Love Me (ft. Boy George & Miike Snow)",
"duration": "298",
"playcount": "1011",
"mbid": "",
"url": "http:\/\/www.last.fm\/music\/Mark%2BRonson%2B%2526%2BThe%2BBusiness%2BIntl\/_\/Somebody%2BTo%2BLove%2BMe%2B%2528ft.%2BBoy%2BGeorge%2B%2526%2BMiike%2BSnow%2529",
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Mark Ronson & The Business Intl",
"mbid": "146a66b3-5544-4b7e-9b69-9b53ee30746a",
"url": "http:\/\/www.last.fm\/music\/Mark%2BRonson%2B%2526%2BThe%2BBusiness%2BIntl"
},
/* NO IMAGE PROPERTY */
"@attr": {
"rank": "2"
}
},
// ...
Поскольку свойства image
нет,когда вы делаете item.image
, он возвращает undefined
, поэтому item.image[3]
пытается найти свойство 3
в undefined
.
Чтобы исправить это, вы можете проверить каждый уровень глубины, чтобы сделатьопределенные свойства существуют.
if( item.image && item.image[3] && item.image[3]['#text'] ) {
var txt = item.image[3]['#text'];
} else {
var txt = '';
}