0
{ "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);
                        });
                    });
                }

我试图使用每个函数使用权限作为列表,但警报总是显示未定义。我哪里错了?

4

4 回答 4

3

itemData.permissions是一个对象,而不是一个数组。数组在属性中permissionlist

jQuery.each(itemData.permissions.permissionlist, function(index, permissionData) {
                            alert(permissionData.title);
                        });
于 2013-01-22T14:13:47.693 回答
2

您正在迭代错误的属性,在权限内部您仍然有一个权限列表:

jQuery.each(itemData.permissions.permissionList, function(index, permissionData) {
  alert(permissionData.title);
});
于 2013-01-22T14:14:14.007 回答
2

permissions是一个对象,其permissionList元素包含对象数组。您不是在遍历数组,而是遍历permissionlist对象本身。采用:

jQuery.each(itemData.permissions.permissionlist)

您也可以使用permissionData[0].title,但这只会获得第一个标题。

我已经看到这样的问题被问了足够多的时间来创建这个:https ://github.com/ajcrites/json-visualize/

你可以在这里看到它用于这个问题:http: //jsfiddle.net/4cb2b/

于 2013-01-22T14:17:47.440 回答
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

于 2013-01-22T14:23:59.557 回答