解析出ajax json的结果

时间:2011-03-24 23:46:52

标签: jquery ajax json

我正在尝试使用以下代码解析通过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的嵌套有关。有人可以指出我正确的方向指向某些材料或代码,告诉我如何可能遍历数据,就像我收到的那样。

3 个答案:

答案 0 :(得分:5)

请改为尝试:

alert(result.d.Columns.length);

阅读那个怪人'd'

答案 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);