从json文件数组加载数据

时间:2018-04-28 22:31:26

标签: jquery arrays json

我正在尝试从.json文件中提取用户信息。该文件以下列格式(确切地)动态输出用户信息:

[
    {
        "endpoint":"10.0.0.2",
        "id":1,
        "identifiers":["0x002","0x003"],
        "name":"user_one",
        "ping":21
    },
    {
        "endpoint":"10.0.0.3",
        "id":2,
        "identifiers":["0x004","0x005"],
        "name":"user_two",
        "ping":28
    }
]

然后我有一个带有选择字段的HTML文档,如此

<select id="select"></select>

我的目标是收集每个用户的所有idname字段,并将其添加到选择字段作为选项。这是我试图开始的代码,看看我是否可以在线打印这两个人的数据:

var playerData = $.getJSON("https://example.com/file.json?jsoncallback=?");
var $select = $('#select');
$select.find('option').remove();
var listitems = '';
$.each(playerData, function(key, value) {
    listitems += '<option>' + value + '</option>';
});
$select.append(listitems);

由于游戏APP的局限性,我不得不用jSON-P而不是CORS来调用它,因为服务器会阻止访问控制,我无法修改该应用程序的标题。上面的代码块将输出以下内容:

Seems to be creating a whole bunch of dropdown options from somewhere

此时不确定我是否正确调用文件。一旦我打电话给它,它们就被存储在由{}包围的组中,但是还有[]括号包含所有内容。我错过了什么?

1 个答案:

答案 0 :(得分:0)

正如评论所述,$.getJSON()并非如此。尝试将代码放入成功的回调函数中。

$.getJSON("https://example.com/file.json?jsoncallback=?", function(playerData) {
    var listitems = '';
    $.each(playerData, function(key, value) {
      listitems += '<option>' + value + '</option>';
    });
    $('#select option').remove();
    $('#select').append(listitems);
});