【问题标题】:Pulling JSON data from external file with ajax使用ajax从外部文件中提取JSON数据
【发布时间】:2015-08-27 11:17:12
【问题描述】:

我目前正在手动提取 JSON 以使用引导表进行测试,但需要能够从外部文件中提取,类似于我在这里所做的:

    $(document).ready(function() {
        $('#content').dataTable( {
            "ajax": 'test.log'
        });
    });

我目前正在手动设置数据并像这样循环:

$(document).ready(function () {
    var json = [{"data":{
        "Account": "1234",
            "Domain": "domain.com",
        "PlayerClass": "Player"},
        "level": "info",
        "message": "",
        "timestamp": "2015-06-11T15:11:03.425Z"
    },
               {"data":{
        "Account": "4567",
            "Domain": "domain.com",
        "PlayerClass": "Player"},
        "level": "info",
        "message": "",
        "timestamp": "2015-06-11T15:11:03.425Z"
    }];
    var tr;
    for (var i = 0; i < json.length; i++) {
        tr = $('<tr/>');
        tr.append("<td>" + json[i].data.Account + "</td>");
        tr.append("<td>" + json[i].data.Domain + "</td>");
        tr.append("<td>" + json[i].timestamp + "</td>");
        $('table').append(tr);
    }
});

显然,以前使用 ajax 是应用 DataTables,所以我要么需要编写它以应用 .each() 循环,要么将其放入 DataTable。

JSFIDDLE

中的当前版本

【问题讨论】:

    标签: jquery ajax json datatables each


    【解决方案1】:

    以上述格式加载数据的正确方法是使用以下 DataTables 初始化选项:

    $('#example').DataTable({
        "ajax": {
            "url": "test.log",
            "dataSrc": ""
        },
        "columns": [
            { "data" : "data.Account" },
            { "data" : "data.Domain" },
            { "data" : "timestamp" }
        ]
    });
    

    由于您在数据中使用Objects,因此您需要使用columns.data 将对象属性与表列匹配。可以使用点分符号(例如,data.Account)来引用对象属性。

    另外,ajax.dataSrc 选项设置为空字符串,表示您的 JSON 数据是一个数据数组。

    请参阅this JSFiddle 进行演示。请注意,该示例使用 mockjax 库来模拟通过 Ajax 加载 JSON 文件,仅用于演示目的。在url 选项中使用指向您实际文件的 URL。

    【讨论】:

    • 这是正确的方向,但我需要能够从文件中加载 json,而不是硬编码到 responseText
    • @Matt,JSFiddle 示例使用 mockjax 库来模拟通过 Ajax 加载 JSON 文件,仅用于演示目的。在url 选项中使用指向您实际文件的 URL。
    • 我现在可以使用它,但是奇怪的是,它在 json 中的每一行中添加了空白行,当这样调用时:“ajax”:“test.log”,“columns”:[`` { “数据”:“帐户”},{“数据”:“域”}]
    • @Matt,再次查看我关于使用点符号的回答,例如 data.Accountdata.Domain 而不是 AccountDomain
    • 是的,我试过了,但没有数据加载,我收到错误:DataTables warning: table id=example - Requested unknown parameter 'data.Account' for row 0.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2015-03-28
    • 2021-03-27
    • 2019-03-07
    • 1970-01-01
    相关资源
    最近更新 更多