【问题标题】:Datatables - 2 different json sources together数据表 - 2 个不同的 json 源一起
【发布时间】:2016-04-15 09:27:38
【问题描述】:

我有 2 个数据表 jsfiddle 和 3 个 json 源。它works 很好。

但我需要更改所有 json 文件:

原文:

{
    "data": [{
        "id": "11",
        "cat1": "add1.1",
        "cat2": "add1.2",
        "cat3": "add1.3"
    }, {
        "id": "12",
        "cat1": "add2.1",
        "cat2": "add2.2",
        "cat3": "add2.3"
    }]
}

新:删除前 2 行中的 {"data": 和最后的 }

[{
    "id": "11",
    "cat1": "add1.1",
    "cat2": "add1.2",
    "cat3": "add1.3"
}, {
    "id": "12",
    "cat1": "add2.1",
    "cat2": "add2.2",
    "cat3": "add2.3"
}]

我希望如果删除jsfiddle中的.data,并将"ajax": url改为:

"ajax": {
    "url": url,
    "dataSrc": ""
},

这将是有效的。

原文:

$.when(call1, call2).done(function(a1, a2){
        var data = a1[0].data;
        data.splice.apply(data, [2, 0].concat(a2[0].data));
        drawTable("#tab1","",data)
    }); 

drawTable("#tab2","https://api.myjson.com/bins/4lpow","")

function drawTable(id, url, data) {
    $(id).dataTable( {
     "ajax": url,
     data: data,
     columnDefs: [
        { className: "hide", "targets": [ 0 ] },
     ], 
     order: [],
     ordering: false,        
     columns: [
        { "data": "id"},
        { "data": "cat1"},
        { "data": "cat2"},
        { "data": "cat3"}
     ]
  });
}

新:

$.when(call1, call2).done(function(a1, a2){
        //removed .data
        var data = a1[0];
        //removed .data
        data.splice.apply(data, [2, 0].concat(a2[0]));  
        drawTable1("#tab11","",data)
    }); 

drawTable1("#tab21","https://api.myjson.com/bins/3tuls","")

function drawTable1(id, url, data) {
        $(id).dataTable( {
        "ajax": {
            "url": url,
            "dataSrc": ""
        },
         data: data,
         columnDefs: [
            { className: "hide", "targets": [ 0 ] },
         ], 
         order: [],
         ordering: false,        
         columns: [
            { "data": "id"},
            { "data": "cat1"},
            { "data": "cat2"},
            { "data": "cat3"}
         ]
      });
   }

问题是,它与jsfiddle 中的警告一起工作:

请使用 POST 请求

如果我在本地测试这个file 警告是:

DataTables 警告:表 id=tab11 - JSON 响应无效。有关此错误的更多信息,请参阅http://datatables.net/tn/1

【问题讨论】:

  • jsFiddle有语法错误,否则你的代码可以工作,见jsfiddle.net/xwp3jhq1/1
  • 是的,这似乎是单独工作的。但只与警告一起。我只需要删除警告。也许最好的是在本地测试file
  • @Scott Boston Sure,发表评论并投票赞成删除。

标签: javascript jquery arrays json datatables


【解决方案1】:

您不能在drawTable1 函数中同时提供ajaxdata 选项。

改用下面的代码:

function drawTable1(id, url, data) {
    var opt;
    if (url !== "") {
        opt = {
            ajax: {
                url: url,
                dataSrc: ""
            }
        };
    }
    if (data !== "") {
        opt = {
            data: data
        }
    }

    $(id).dataTable($.extend({
        columnDefs: [{
            className: "hide",
            targets: [0]
        }, ],
        order: [],
        ordering: false,
        columns: [
            { "data": "id"},
            { "data": "cat1"},
            { "data": "cat2"},
            { "data": "cat3"}
        ]
    }, opt));
}

【讨论】:

  • 超级好用。您也可以提出问题。谢谢。
猜你喜欢
  • 2012-12-15
  • 2019-06-19
  • 2021-08-07
  • 2019-10-09
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多