【问题标题】:DataTables how to use multiple data from json objectsDataTables如何使用来自json对象的多个数据
【发布时间】:2015-04-01 13:15:31
【问题描述】:

所以我想做的是从json 文件中调用一些数据来填充我的表格。但是我不想拥有很多json 文件,而是想将一些数据保存在一个文件中。例如,我有 2 种类型的客户(个人和公司),我想将它们保存在同一个 json 中,但作为不同的对象,因为每个对象都放在不同的表中。

问题是:我无法访问JSON文件中的数据。

如果我在不同的文件(person.json 和 company.json - 这很好用)中使用 2 种类型的客户端,我可以正常使用它。

我确实尝试了这 2 个示例,但没有一个对我有用。

那么,我怎样才能从文件中获取数据?这是我的 json 和我的数据表代码:

{
    "clients": {
        "person": [
            {
                "cd":0,
                "id":"C-0010",
                "nm_cliente":"Name AAA",
                "dt_nasc":"02/11/1990",
                "info":"Some basic info"
            },
            {
                "cd":1,
                "id":"C-0013",
                "nm_cliente":"Name BBB",
                "dt_nasc":"02/11/1990",
                "info":"Some basic info"
            },
            {
                "cd":2,
                "id":"C-0017",
                "nm_cliente":"Name CCC",
                "dt_nasc":"02/11/1990",
                "info":"Some basic info"
            }
        ],
        "company": [
            {
                "cd":0,
                "id":"C-0032",
                "nm_cliente":"Name Client",
                "num_cnpj":"111.222.3333/0001-22",
                "nm_cidade":"City AAA"
            },
            {
                "cd":1,
                "id":"C-0033",
                "nm_cliente":"Client Name",
                "num_cnpj":"111.222.3333/0001-22",
                "nm_cidade":"City BBB"
            },
            {
                "cd":2,
                "id":"C-0035",
                "nm_cliente":"jEmpresa teste",
                "num_cnpj":"111.222.3333/0001-22",
                "nm_cidade":"City CCC"
            }
        ]
    }
}

我已经使用jsonlint.com 进行了验证,我的JSON 一切正常。这就是我尝试将这些数据调用到我的表中的方式。

TableA - 客户类型 Person

//rest of the code goes here...
"aoColumns" : [
    { "mData": "person.id" },
    { "mData": "person.nm_cliente" },
    { "mData": "person.dt_nasc" },
    { "mData": "person.info" }
]

TableB - 客户类型公司

//rest of the code goes here...
"aoColumns" : [
    { "mData": "company.id" },
    { "mData": "company.nm_cliente" },
    { "mData": "company.nm_cnpj" },
    { "mData": "company.nm_cidade" }
]

我不断收到“未定义长度”之类的错误

谁能帮帮我?

【问题讨论】:

    标签: ajax json jquery-datatables


    【解决方案1】:

    您必须引用 personcompany 数组本身,而不是项目。更新以演示加载 JSON 后的初始化以及如何重用和操作选项:

    //an options object, some example settings
    var options = {
        bPaginate: true,
        sPaginationType: "full_numbers",
        aLengthMenu: [25,50,100,500]
        //etc 
    }    
    
    function initialize(json) {
         options.aaData = json.clients.person;
         options.aoColumns = [
               { "mData": "id" },
               { "mData": "nm_cliente" },
               { "mData": "dt_nasc" },
               { "mData": "info" }
            ];
    
        $("#tableA").dataTable(options);
    
        options.aaData = json.clients.company;
        options.aoColumns = [
               { "mData": "id" },
               { "mData": "nm_cliente" },
               { "mData": "num_cnpj" },
               { "mData": "nm_cidade" }
            ];
    
        $("#tableB").dataTable(options);
    }
    
    $.getJSON("your.json", function(json) {
       initialize(json);
    });
    

    展示如何注入 JSON 的原始演示 -> http://jsfiddle.net/3g5wcyet/

    可重用选项演示 -> http://jsfiddle.net/bpgvfefd/

    【讨论】:

    • 我收到此错误:Uncaught ReferenceError: clients is not defined 我的代码和您的 jsfiddel 之间的区别在于您的数据在 var 内,而我正在从外部 json 加载我的数据,如下所示:@ 987654328@这个错误跟这个有关系吗?
    • @CelsomTrindade,是的 - 这就是您收到该错误的原因,请参阅更新的答案。
    • 您知道是否有其他方法可以做到这一点?因为我的表中有一些其他选项(但我会尝试你的解决方案)。 Ps.:我不是jquery的高级用户
    • @CelsomTrindade 数据表选项只是一个您可以根据需要重用和操作的对象,请参阅更新的最终答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多