невозможно получить значения из JSON, преобразованные из XML - PullRequest
1 голос
/ 21 апреля 2010

Я передал JSON на мою страницу через веб-сервис. Я использовал JSON.NET для преобразования XML в JSON. Вывод JSON выглядит нормально для меня, но я не могу получить доступ к некоторым элементам в ответе. Я не уверен, почему это не работает. Я использую jQuery, чтобы прочитать ответ и сделать вызов веб-службы. Даже когда я пытаюсь прочитать длину массива, он говорит 'undefined'

function GetFeed(){

        document.getElementById("marq").innerHTML = '';

        $.ajax({
            type: "POST",
            url: "ticker.asmx/GetStockTicker",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {                  

            var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

            for (var i = 0; i < obj.length; i++) {
                $('#marq').html(obj[i].person);
            }               

            }
        });

    }

Это копия и вставка моего ответа, как он появился в firebug:

{"d":"{\"?xml\":{\"@version\":\"1.0\",\"@standalone\":\"no\"},\"root\":{\"person\":[{\"@id\":\"1\",\"name\":\"Alan\",\"url\":\"http://www.google.com\"},{\"@id\":\"2\",\"name\":\"Louis\",\"url\":\"http://www.yahoo.com\"}]}}"}

Ответы [ 2 ]

2 голосов
/ 21 апреля 2010

Вы должны быть в состоянии прочитать ответ без вызова тернарного оператора ... в любом случае, если вы пытаетесь перебрать массив персон, вы должны ориентироваться на объект response.d.root.person, а не на его родительский:

for (var i = 0; i < response.d.root.person.length; i++) {
  $('#marq').html(d.root.person[i].name //.url, ...);
}  
0 голосов
/ 21 апреля 2010

Я знаю, что у Aquax complete в Jquery была проблема, что он всегда вызывается дважды, когда запрос завершен. Я не уверен, что дело в успехе.

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