我正在尝试使用下面的确切结构解析JSON文件。
{
"students": {
"student": [
{
"id": 1,
"name": "John Doe",
"image": "pic1.jpg",
"homepage": "http: //www.google.com"
},
{
"id": 2,
"name": "Jane Doe",
"image": "pic1.jpg",
"homepage": "http: //www.google.com"
}
]
}
}
我正在使用以下jQuery函数:
function GetStudents(filename)
{
$.getJSON(filename, function(data){
$.each(data.student, function(i,s){
var id = s.id;;
var name = s.name;;
var img = s.image;;
var homepage = s.homepage;
$('.networkTable').append('<tr><td><img src="' + img + '" class="picEven pic" width="33" height="35"></td><td><a href="'+ homepage + '" class="networkLink">' + name + '</a></td></tr>');
});
});
}
我做错了吗?
答案 0 :(得分:6)
您没有访问正确的元素。 data
未指向students
,它指向最外层元素{students:...}
(students
是其属性)。该数组包含在data.students.student
:
$.each(data.students.student, function() {
//...
});
补充说明:
如果只访问一次属性,则不需要创建局部变量(当然它可能更具可读性)。
虽然连续的分号;;
没有错,但这是不必要的和令人困惑的(至少让我感到困惑;)
答案 1 :(得分:1)
s.nametry: <br/>
$("document").ready(function() {
$.getJSON(fileUrl,
function(data)
{
$("#div-my-table").text("<table>");
$.each(data, function(i, item) {
$("#div-my-table").append("<tr><td>" + item.prop1 +"</td><td>" + item.prop2 + "</td></tr>");
});
$("#div-my-table").append("</table>");
});
});