0

我正在使用从 url 获得的 json 对象中的信息构建一个表,而该表将构建并填充一个“无法读取未定义的属性 'x'”类型的错误。

获取 json 和建表的代码是:

$.getJSON(url,function(data) {
    for (var i = 0; i < 100 || i < data.length; i++) {
        tr.append("<td">"+ data[i].Forename + " " + data[i].Surname + "</td>");
            tr.append("<td>" + data[i].Workphone + "</td>");
            tr.append("<td>" + data[i].id + "</td>");
            tr.append("<td>" + data[i].Department + "</td>");
            tr.append("<td">" + data[i].Office + "</td>");
            tr.append("<td">" + data[i].Floor + "</td>");
            tr.append("<td">" + data[i].Room + "</td>");
            $('#body').append(tr);
    }
}

json的基本示例是:

[{
    "Forename": "fname",
    "Surname": "sname",
    "Id": "id",
    "Workphone": "phone",
    "Department": "department",
    "Office": "office",
    "Floor": "floor",
    "Room": "room"
},
{
    "Forename": "fname",
    "Surname": "sname",
    "Id": "id",
    "Workphone": "phone",
    "Department": "department",
    "Office": "office",
    "Floor": "",
    "Room": ""
}]

错误在 data[i].Forename 的第一个 tr.append 上抛出,但如果 Forename 被删除,将在下一个 data[i].property 发生。

任何帮助,将不胜感激。谢谢。

4

2 回答 2

0
Try this one:

for (var i = 0; i < 100 || i < data.length; i++) {
        tr.append("<td>"+ data[i].Forename + " " + data[i].Surname + "</td>");
            tr.append("<td>" + data[i].Workphone + "</td>");
            tr.append("<td>" + data[i].id + "</td>");
            tr.append("<td>" + data[i].Department + "</td>");
            tr.append("<td">" + data[i].Office + "</td>");
            tr.append("<td">" + data[i].Floor + "</td>");
            tr.append("<td">" + data[i].Room + "</td>");
            $('#body').append(tr);
    }`
于 2013-11-07T12:44:15.000 回答
0

首先 JSON 是区分大小写的,所以调用 'id' 而不是 'Id' 是行不通的。

其次,您在不应该出现引号的地方打开引号。在 <td> 周围。

第三:变量tr从何而来?它是否在此代码上方定义,否则您应该在使用它之前在某个地方定义它。

第四:你想将 tr 附加到 <body> 标签还是带有 'id' #body 的元素。你在做后者!

编辑:添加了 || && 缪斯凡的建议。

这应该有效(未经测试):

$.getJSON(url, function(data) {
    for (var i = 0; i < 100 && i < data.length; i++) {
        tr.append("<td>" + data[i].Forename + " " + data[i].Surname + "</td>");
        tr.append("<td>" + data[i].Workphone + "</td>");
        tr.append("<td>" + data[i].Id + "</td>");
        tr.append("<td>" + data[i].Department + "</td>");
        tr.append("<td>" + data[i].Office + "</td>");
        tr.append("<td>" + data[i].Floor + "</td>");
        tr.append("<td>" + data[i].Room + "</td>");
        $("#body").append(tr);
    }
}
于 2013-11-07T12:35:19.517 回答