javascript - 将数据加载到我不知道列的数据表中

标签 javascript php jquery ajax json

我正在通过使用 AJAX 响应从数据库获取数据来创建数据表。

我收到以下 JSON 数据:

[
    {
        "id": "11105",
        "name": "Gummy Drop (iPhone, Free, ROW except CN, 72.3MB, w"
    },
    {
        "id": "11107",
        "name": "Gummy Drop (iPad, Free, ROW except CN, 72.3MB, w/ "
    },
    {
        "id": "4274",
        "name": "Z-Redirect Non-Targeted Traffic Dragon City Mobile"
    },
    {
        "id": "6484",
        "name": "Z-Redirect Non-Targeted Traffic Dragon City Mobile"
    }
]

问题是,我可能不知道 AJAX 响应将来自哪些数据。

因此,我提取 JSON 数组的键来创建 header ,我成功地做到了这一点。

这是我的代码:

$('#load').click(function()
    {
        var v = $('#drp_v').val();
        var cnt = $('#drp_cnt').val();
        var ctg = $('#drp_ctg').val();
        alert("version :"+v+" category :"+ctg+" country :"+cnt);
        $.post("ajax.php",{'version':v,'category':ctg,'country':cnt,'func':'show_datatable'},
                        function(data)
                        {
                            var aColumns = [];
                            var columns = [];
                            for(var i = 0; i < data.length; i++) 
                            {
                                if(i>0)
                                    break;
                                keycolumns = Object.keys(data[i]); 
                                for(j = 0; j < keycolumns.length; j++)
                                {
                                    alert(keycolumns[j]);
                                    if($.inArray(keycolumns[j],aColumns.sTitle)<=0)
                                    {
                                        aColumns.push({sTitle: keycolumns[j]}) //Checks if
                                        columns.push(keycolumns[j]) //Checks if
                                    }                                  
                                }

                            }

                            var oTable = $('#jsontable').dataTable({
                                "columns":aColumns,
                                "sDom": 'T<"clear">lfrtip',
                                    "oTableTools": {
                                        "aButtons": [
                                            {
                                                    "sExtends": "csv",
                                                    "sButtonText": "CSV",
                                             }
                                        ]
                                    }
                            });
                            oTable.fnClearTable();
                            for(var i = 0; i < data.length; i++) 
                            {
                                for(var c = 0; c < columns.length; c++) 
                                {
                                    oTable.fnAddData([
                                            data[i].columns[c]]); 
                                }
                            }
                        },'json');
    });

如您所见,var columns = []; 实际上包含我获取的 JSON 数组的键。所以var columns的值是这样的:

['id','name','描述'];

因此,如果我们假设 id、name 和description 是三个键,则不要使用以下代码:

for(var i = 0; i < data.length; i++) 
 {
    oTable.fnAddData([
                      data[i].id,
                      data[i].name,
                      data[i].description]); 
}

我用过这个代码

for(var i = 0; i < data.length; i++) 
 {
   for(var c = 0; c < columns.length; c++) 
    {
        oTable.fnAddData([
                          data[i].columns[c]]); 
    }
}

以便数据可以作为存储在 var 列中的动态键值加载。

但我想我犯了一些错误。我哪里出错了?

最佳答案

使用此代码:

var row = []
for(var i = 0; i < data.length; i++) {
    for(var c = 0; c < columns.length; c++) {
            row.push( data[i][columns[c]] ) ;
    }
    oTable.fnAddData(row);
    row = [];
} 

关于javascript - 将数据加载到我不知道列的数据表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27168245/

相关文章:

javascript - MongoDB mapReduce 方法意外结果

PHP 或 Javascript : Simply Remove and Replace HTML Code

javascript - 通过比较具有不同元素的两个对象数组来过滤和删除项目

javascript - 获取多行选择中第一行文本的位置

javascript - 如何使用 jQuery 将多个 GET 放入一个数组中

php - zend 框架 : how to prepare and execute WHERE IN clause?

php - 递归函数 : Call php function itself

php - 如何扩展 Laravel Storage 门面?

jQuery 在菜单上添加 .active 类

javascript - jQuery 窗口滚动动画