无法从XML转换的JSON中获取值

时间:2010-04-21 13:49:45

标签: asp.net jquery xml json web-services

我已通过网络服务将一些JSON传递到我的页面。我使用JSON.NET将XML转换为JSON。 JSON输出对我来说没问题,但我无法访问响应中的某些项目。我不确定为什么它不起作用。我正在使用jQuery来读取响应并进行webservice调用。即使我试图读取数组的长度,它也会显示为“未定义”

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 个答案:

答案 0 :(得分:2)

你应该能够在不调用三元运算符的情况下读取响应...无论如何,如果你试图迭代人员数组,你应该以response.d.root.person对象为目标,而不是它的父对象:

for (var i = 0; i < response.d.root.person.length; i++) {
  $('#marq').html(d.root.person[i].name //.url, ...);
}  

答案 1 :(得分:0)

我知道Jquery的Ajax完成有问题,它在请求完成时总是被调用两次。我不确定这是否成功。