jQuery / Javascript从对象中提取信息

时间:2009-09-01 21:14:29

标签: javascript jquery

我正在尝试使用以下代码从Ajax调用返回的某些json创建客户端名称列表。

数据如下:

{“status”:1,“data”:{“clients”:[{“ClientID”:“1”,“AccountID”:“1”,“ClientName”:“Access Loan Mitigation”,“Active” :“1”},{“ClientID”:“2”,“AccountID”:“1”,“ClientName”:“大时间业务”,“有效”:“1”},{“ClientID”:“3” ,“AccountID”:“1”,“ClientName”:“Bill Releford”,“Active”:“1”},{“ClientID”:“4”,“AccountID”:“1”,“ClientName”:“Bonnie Silverman“,”Active“:”1“},{”ClientID“:”5“,”AccountID“:”1“,”ClientName“:”Dear Holdings“,”Active“:”1“},{”ClientID “:”6“,”AccountID“:”1“,”ClientName“:”Calm Dental“,”Active“:”1“},{”ClientID“:”7“,”AccountID“:”1“,” ClientName“:”Eva Field“,”Active“:”1“},{”ClientID“:”8“,”AccountID“:”1“,”ClientName“:”First Independent Pictures“,”Active“:”1 “},{”ClientID“:”9“,”AccountID“:”1“,”ClientName“:”图库825“,”有效“:”1“},{”ClientID“:”10“,”AccountID“ :“1”,“ClientName”:“Greenway Arts Alliance”,“Active”:“1”},{“ClientID”:“11”,“AccountID”:“1”,“ClientName”:“国际战略组” , “活动”: “1”},{ “客户端ID”: “12”, “帐户ID”: “1”, “CLIENTNAME”: “Ramtin”, “活性”: “1”},{ “客户端ID”:” 13" ,“帐号ID “:” 1" , “CLIENTNAME”: “Spabro”, “活性”: “1”},{ “客户端ID”: “14”, “帐户ID”: “1”, “CLIENTNAME”: “LMGA”,”有效“:”1“},{”ClientID“:”15“,”AccountID“:”1“,”ClientName“:”主要街道商业协会“,”有效“:”1“},{”ClientID“: “16”,“AccountID”:“1”,“ClientName”:“Rabbit Animation”,“Active”:“1”},{“ClientID”:“17”,“AccountID”:“1”,“ClientName” :“客房&花园”, “活性”: “1”},{ “客户端ID”: “18”, “帐户ID”: “1”, “CLIENTNAME”: “夏令时”, “活性”: “1”},{ “客户端ID” :“19”,“AccountID”:“1”,“ClientName”:“Sue Shellock”,“Active”:“1”},{“ClientID”:“20”,“AccountID”:“1”,“ClientName” “:”Susan Gates“,”Active“:”1“},{”ClientID“:”21“,”AccountID“:”1“,”ClientName“:”The Park Entertainment“,”Active“:”1“ },{“ClientID”:“22”,“AccountID”:“1”,“ClientName”:“统一调度”,“有效”:“1”},{“ClientID”:“23”,“AccountID”: “1”,“ClientName”:“Westside Media Group”,“Active”:“1”},{“ClientID”:“24”,“AccountID”:“1”,“ClientName”:“YHD”,“有效“:”1“},{”ClientID“:”25“,”AccountID“:”1“,”ClientName“:”Discoverfire,Inc。“,”有效“:”1“}}}}

,代码如下:

        for (var Client in o.data.clients) {
            $('#list_container').append("<div>"+Client.ClientName+"</div>");
        }

不太正常,我尝试了几种不同的方式来访问ClientName属性。 Javascript不是我最强的语言,从对象中获取数据只会让我失望 - 用于PHP对象和数组。

我确信这很简单 - 有人能说出正确的语法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

客户端是一个数组,因此最好在其上使用jQuery的each

$.each( o.data,clients, function(idx, client) {
   // use client.ClientName here
});

答案 1 :(得分:2)

这不是for循环的工作原理。更简单,更准确,更可靠的解决方法是使用传统的for语法,如下所示:

for (var i = 0; i < o.data.clients.length; i++) {
    var client = o.data.clients[i];
    $('#list_container').append("<div>"+client.ClientName+"</div>");
}

您正在使用的for语法将起作用,但它仍在迭代索引(而不是值),即使这样,它也不仅限于数组中的整数索引 - 它还可以包含在其上定义的其他属性数组原型,甚至是特定的数组对象。对于像这样的传统数组,使用枯燥的i = 0语法进行迭代是一个更好的选择。