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



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

Json 字符串为:

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

所以它理解 data.routers,它甚至理解 data.routers.DNSROOTSERVER.name(正如您将在控制台中看到的那样.log),但是当我使用 data.router 上的循环时,循环项目显示 (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

知道我做错了什么吗?

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

最新更新