我有一个非常简单的函数,它遍历一些JSON数据并将数据添加到列表中:
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数据:
{
"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输出,所以我确信我遗漏了一些东西。
发布于 2014-03-17 10:50:44
您正在对从0开始的基于数组的计数进行循环。虽然"Length“属性不是基于零的计数属性,因此它从1开始计数。您需要进行以下两种修改之一:
for( var i=1; i <= data.agencies.length; i++ ) --> Works for looping thought non Zero-based data indexes
或
for( var i=0; i < data.agencies.length; i++ ) --> Works for JSON and Array-Based
编辑:第一个示例不能像JSON那样循环遍历基于数组的数据。
https://stackoverflow.com/questions/22446019
复制相似问题