Разбор результатов AJAX JSON - PullRequest
2 голосов
/ 25 марта 2011

Я пытаюсь проанализировать некоторые данные, которые были возвращены из веб-службы через json, с помощью следующего кода.

        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 ]

5 голосов
/ 25 марта 2011

Попробуйте вместо этого:

alert(result.d.Columns.length);

И прочитайте об этом чудаке 'd' .

1 голос
/ 25 марта 2011

Вы ищете количество строк? Это должно сделать это:

alert(result.d.Rows.length);
1 голос
/ 25 марта 2011

Какой счет вас интересует?

Вас интересует длина какого свойства? Колонны или строки? В любом случае эти две строки показывают каждую из них.

alert(result.d.Columns.length);
alert(result.d.Rows.length);

Как вы видите, я обращаюсь к свойствам с помощью оператора доступа вместо индексатора. Но вы могли бы сделать то же самое так:

alert(result["d"]["Columns"].length);
alert(result["d"]["Rows"].length);

Но я считаю, что первый подход намного чище, потому что я точно знаю, что работаю с объектом Javascript, а не с массивом (объект Javascript на самом деле является ассоциативным массивом, но давайте не будем возражать против этих деталей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...