我正在尝试使用以下代码解析通过json从Web服务返回的一些数据。
function getADData() {
var strSearch = $('#txtSearch').val()
var ajaxData = "{ 'PartNameString': '" + strSearch + "' }";
$.ajax({
type: "POST",
url: "/Services/ActiveDirectoryInterop.asmx/SearchUsers",
data: ajaxData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success:populateTable
});
}
function populateTable(result) {
alert(result["d"].length);
}
返回的数据就是这个。
{"d":{"Columns":["UserID","Name","Email"],"Rows":[["U99999","Lees, Smith","someemail1@canfor.com"],["U99999","Lees, Mark","someemail1@canforpulp.com"],["99999","Lees, Bob","someemail1@canforpulp.com"],["U999999","Lees, John","someemail1@canforpulp.com"],["U999999","Lees, Jim","someemail1@canforpulp.com"]]}}
虽然jsut返回undefined的警报。所以我知道我错过了一些东西,它可能与JSON的嵌套有关。有人可以指出我正确的方向指向某些材料或代码,告诉我如何可能遍历数据,就像我收到的那样。
答案 0 :(得分:5)
答案 1 :(得分:1)
您对哪个属性的长度感兴趣?列还是行?无论如何,这两行显示了每一行。
alert(result.d.Columns.length);
alert(result.d.Rows.length);
正如您所看到的,我正在使用访问者运算符而不是索引器来访问属性。但你也可以这样做:
alert(result["d"]["Columns"].length);
alert(result["d"]["Rows"].length);
但是我发现第一种方法更清洁,因为我确切地知道我正在使用Javascript对象而不是数组(Javascript对象实际上是一个关联数组,但我们不介意这些细节)。
答案 2 :(得分:1)
您在寻找行数吗?这应该这样做:
alert(result.d.Rows.length);