jquery ajax成功数据访问嵌入对象

时间:2013-01-22 14:08:08

标签: jquery ajax callback

{ "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。我在哪里错了?

4 个答案:

答案 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进行测试