首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >遍历JSON数据时出现控制台错误

遍历JSON数据时出现控制台错误
EN

Stack Overflow用户
提问于 2014-03-17 10:37:36
回答 1查看 37关注 0票数 0

我有一个非常简单的函数,它遍历一些JSON数据并将数据添加到列表中:

代码语言:javascript
复制
function printData(file) {
    $.getJSON('json/' + file, function(data) {
        for( var i=0; i <= data.agencies.length; i++ ) {
            $('#results').append(
                '<li class="group">' +
                    '<div class="agency-logo"><img src="images/agency_logos/' + data.agencies[i].logo + '" alt="' + data.agencies[i].name + '" /></div>' +
                    '<div class="agency-info">' + data.agencies[i].name + '<br />' +
                    data.agencies[i].address + '<br />' +
                    data.agencies[i].city + ', '  + data.agencies[i].state + ' '+ data.agencies[i].zip + '<br />' +
                    data.agencies[i].phone + '<br />' +
                    data.agencies[i].email + '</div>' +
                    '<div class="agency-desc">' + data.agencies[i].description + '</div>' +
                '</li>'
            );
        }
    });
}

JSON数据:

代码语言:javascript
复制
{
"agencies" : [
    {
        "name"          : "Test Agency",
        "address"       : "283 Main Street",
        "city"          : "Danbury",
        "state"         : "CT",
        "zip"           : "06810",
        "phone"         : "(555) 555-5555",
        "email"         : "name@website.com",
        "description"   : "This is the description.",
        "logo"          : "logo.gif"

    },
    {
        "name"          : "Test Agency",
        "address"       : "100 Oak Street",
        "city"          : "Roseland",
        "state"         : "NJ",
        "zip"           : "06810",
        "phone"         : "(444) 444-4444",
        "email"         : "name@website.com",
        "description"   : "This is the description.",
        "logo"          : "logo.gif"
    }
]
}

一切都在正常工作和输出,但是我在输出的第一个项目上得到了一个控制台错误:(我假设每次调用都会得到错误,但JS在出现错误时停止解析。)

TypeError:“undefined”不是对象(对“data.agenciesi.logo”求值)

这是我第一次尝试通过JSON输出,所以我确信我遗漏了一些东西。

EN

回答 1

Stack Overflow用户

发布于 2014-03-17 10:50:44

您正在对从0开始的基于数组的计数进行循环。虽然"Length“属性不是基于零的计数属性,因此它从1开始计数。您需要进行以下两种修改之一:

代码语言:javascript
复制
    for( var i=1; i <= data.agencies.length; i++ ) --> Works for looping thought non Zero-based data indexes 

代码语言:javascript
复制
    for( var i=0; i < data.agencies.length; i++ )  --> Works for JSON and Array-Based

编辑:第一个示例不能像JSON那样循环遍历基于数组的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22446019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档