{ "id": "36", "title": "Dr","firstname": "Ian", "lastname": "Fletcher", "permissions": { "permissionlist": [{ "title": "Images", "accessid": "152"},{ "title": "Documents", "accessid": ""}] } }
我有一个带有上述数据的ajax回调,需要一些帮助来获取一些数据。
我设法从回调数据中获取数据,例如id,title firstname,lastname,但我很难获得权限。
success: function(data) {
jQuery.each(data, function(index, itemData) {
$('#<%=txtTitle.ClientID %>').val(itemData.title);
$('#<%=txtFirstName.ClientID %>').val(itemData.firstname);
$('#<%=txtSurname.ClientID %>').val(itemData.lastname);
jQuery.each(itemData.permissions, function(index, permissionData) {
alert(permissionData.title);
});
});
}
我尝试使用权限作为列表来使用每个函数,但警报始终显示为undefined。我在哪里错了?
答案 0 :(得分:3)
itemData.permissions
是一个对象,而不是一个数组。该数组位于属性permissionlist
。
jQuery.each(itemData.permissions.permissionlist, function(index, permissionData) {
alert(permissionData.title);
});
答案 1 :(得分:2)
您正在迭代错误的属性,在权限内仍然拥有permissionList:
jQuery.each(itemData.permissions.permissionList, function(index, permissionData) {
alert(permissionData.title);
});
答案 2 :(得分:2)
permissions
是一个对象,其中包含一个包含对象数组的permissionList
元素。您没有遍历数组,而是遍历permissionlist
对象本身。使用:
jQuery.each(itemData.permissions.permissionlist)
您也可以使用permissionData[0].title
,但只能获得第一个标题。
我已经看到像这样的问题需要足够多次来创建:https://github.com/ajcrites/json-visualize/
您可以在此处看到它用于此问题:http://jsfiddle.net/4cb2b/
答案 3 :(得分:2)
data
是从ajax调用返回的对象。循环遍历每个级别的属性,您将看到结构
function success(data) {
// data
jQuery.each(data, function (index, itemData) {
alert('index=' + index + ', itemData=' + itemData);
});
// data.permissions
jQuery.each(data.permissions, function (index, itemData) {
alert('index=' + index + ', itemData=' + itemData);
});
// data.permissions.permissionlist
jQuery.each(data.permissions.permissionlist, function (index, itemData) {
alert('index=' + index + ', itemData=' + itemData);
});
// ...
}
success(data);
JSFiddle进行测试