2013-01-22 42 views
0
{ "id": "36", "title": "Dr","firstname": "Ian", "lastname": "Fletcher", "permissions": { "permissionlist": [{ "title": "Images", "accessid": "152"},{ "title": "Documents", "accessid": ""}] } } 

我有上述數據的Ajax回調,並需要得到一些數據出來的一些幫助。jQuery的AJAX sucess數據訪問嵌入對象

我已經設法從回調數據中獲取數據,例如ID,標題的名字,姓氏,但我正在努力獲得權限。

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); 
         }); 
        }); 
       } 

我試圖使用權限作爲列表的每個功能,但警報始終顯示未定義。我在哪裏錯了?

回答

3

itemData.permissions是一個對象,而不是一個數組。該陣列位於酒店permissionlist

jQuery.each(itemData.permissions.permissionlist, function(index, permissionData) { 
          alert(permissionData.title); 
         }); 
2

你迭代的錯誤性質,內部的權限,你仍然有permissionList:

jQuery.each(itemData.permissions.permissionList, function(index, permissionData) { 
    alert(permissionData.title); 
}); 
2

permissions是具有包含對象數組的元素permissionList的對象。您不是遍歷數組,而是遍歷permissionlist對象本身。用途:

jQuery.each(itemData.permissions.permissionlist) 

你也可以使用permissionData[0].title,但只得到第一稱號。

我已經看到了問題,這樣的要求足夠的時間來創建此:https://github.com/ajcrites/json-visualize/

你可以看到它用於這個問題在這裏:http://jsfiddle.net/4cb2b/

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測試