如何循环json列表中的元素Ajax / Javascript

时间:2016-07-06 09:58:40

标签: javascript jquery json ajax parsing

我有一个问题,ajax可以看到我从flask中给出的数据,但是当我循环它时它似乎没有在内部解析。这是一个1项循环,但是当数据输入时它会更多。

Json字符串是:

{ "routers" : {"DNSROOTSERVER": {"os": "4.4.4.4", "name": "DNSROOTSERVER"}}}

所以它理解data.routers,它甚至理解data.routers.DNSROOTSERVER.name(你会在console.log中看到),但是当我在data.routers上使用循环时,循环项显示( el),但是当我尝试使用el.name时它似乎失败了,说它是未定义的。 Javascript如下:

$(document).ready(function(){
$.ajax({ url: "{{ url_for('.gui_form') }}", dataType: 'json',
    success: function(data, textStatus, xhr){
        console.log(data)
        $(data.routers).each(function(i, el) {
            console.log(el)
            console.log(el.os)
            console.log(data.routers.DNSROOTSERVER.os)
            var listem = "<br>" + el.name;
            $("#routers").append("<li>" + listem + "</li>");
        });
    }
    });
});

我已经扩展了控制台日志,因此您可以看到数据是否存在以及循环el.os如何出现未定义但data.routers.DNSROOTSERVER.name干净利落地显示为ios:

Object {routers: Object}routers: ObjectDNSROOTSERVER: Objectip: "4.4.4.4"name: "DNSROOTSERVER"os: "ios"__proto__: Object__proto__: Object__proto__: Object
Object {DNSROOTSERVER: Object}DNSROOTSERVER: Objectip: "4.4.4.4"name: "DNSROOTSERVER"os: "ios"__proto__: Object__proto__: Object
undefined
ios

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

基于你的javascript,json看起来像{ "routers" :[ {"os": "4.4.4.4", "name": "DNSROOTSERVER"}]}