Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从动态JSON输出创建完全动态的表?_Javascript_Php_Json - Fatal编程技术网

Javascript 如何从动态JSON输出创建完全动态的表?

Javascript 如何从动态JSON输出创建完全动态的表?,javascript,php,json,Javascript,Php,Json,我需要能够从输出JSON对象的函数动态创建的JSON构建HTML表。但是,我事先不知道键和值是什么,因此在获得数据之前无法创建表头和单元格。例如,这是一个输出JSON的函数,用于解释我不知道键和值的原因: header('Content-type: application/json'); echo "{"; echo '"aaData" : ['; for ($i = 0; $i < $ContentCount; $i++) { e

我需要能够从输出JSON对象的函数动态创建的JSON构建HTML表。但是,我事先不知道键和值是什么,因此在获得数据之前无法创建表头和单元格。例如,这是一个输出JSON的函数,用于解释我不知道键和值的原因:

    header('Content-type: application/json');

    echo "{";
    echo '"aaData" : [';
    for ($i = 0; $i < $ContentCount; $i++)
    {
        echo '{ '; 
        for ($j = 0; $j < $HeadCount; $j++)
        {

            echo '"' .$Headers[$j][name] .'" : "' . $Content[$i][$Headers[$j][name]] . '"';
            if ($j != $HeadCount - 1) { echo ","; }

        }
        echo ' }';
        if ($i != $ContentCount - 1) { echo ","; }  
    }
    echo "] }";

此函数创建一个为DataTables格式化的有效JSON对象,尽管它用于自定义工作。我想知道的是如何读取键和值对,这样我就可以基于它们建立一个表或其他格式。

这可以通过使用$.map来实现

示例:将原始对象映射到新数组,并将每个值加倍

var dimensions = { width: 10, height: 15, length: 20 };
dimensions = $.map( dimensions, function( value, index ) {
  return value * 2;
});
结果:

[ 20, 30, 40 ]
[ "width", "height", "length" ]
示例:将对象的关键帧映射到数组

var dimensions = { width: 10, height: 15, length: 20 };
var keys = $.map( dimensions, function( value, key ) {
  return key;
});
结果:

[ 20, 30, 40 ]
[ "width", "height", "length" ]
例如,请阅读

上的更多内容

var dimensions = [{ width: 11, height: 15, length: 20 },{ width: 12, height: 15, length: 20 },{ width: 13, height: 15, length: 20 }];

var keys = $.map( dimensions[0], function( value, key ) {
  return key;
});
$('#DynTbl').append('<table id="dt" border=1><tr id="dth"></tr></table>');

$.each(keys, function(key,value) {
    $('#dth').append('<th>'+value+'</th>');
});


$.each(dimensions, function(index,data) {

$('#dt').append('<tr id="t'+index+'"></tr>');

var values = $.map( data, function( value, key ) {
  return value;
});

$.each(values, function(key,value) {
    $('#t'+index).append('<td>'+value+'</td>');
});
});

试一试

这确实做得很完美!为了让它工作,我不得不稍微调整一下,但这与我的系统相匹配。