我正在研究一个巨大的自定义数据表函数,我有一个简单的问题,我需要将'sType'设置为所有'aoColumns',但这些表是动态的,因此它们可能有6或10列,并且我找不到办法,我已经尝试了以下选项:
//doesn't work
"aoColumns": [{"sType":"string", "aTargets": ["_all"]}],
//this works, but its not dynamic :/
"aoColumns": [{"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}],
我无法使用服务器端
执行此操作obs。:我的列数为var
6 columns
"aoColumns": [{"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}],
10 columns
"aoColumns": [{"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}],
非常感谢
答案 0 :(得分:1)
服务器端PHP:嗯,如果你在php中创建表,那么你应该能够构建一个字符串,其中包含你可以插入javacript所需的所有数组部分。
<?php
$colnum = 6;
$i = 1;
$aocolumns = array();
while($i <= $colnum){
$aocolumns[] = '{"sType":"string"}';
$i++;
}
$aocolumns = join(",",$aocolumns);
$aocolumns = '[' . $aocolumns . ']';
?>
然后将其放入
"aoColumns": <?=$aocolumns?>
Javascript:假设您将ajax中的列作为名为“cols”的数组返回,您可以尝试使用for循环。 :
var aocolumns = [];
for(i in cols){
var ao = {"sType":"string"};
aocolumns.push(ao);
}
alert(aocolumns);
答案 1 :(得分:1)
其他答案比他们需要的更复杂。
Javascript版本:
var i, aoColumns = [];
for (i = 0; i < totalCol; i++) {
aoColumns.push( { 'sType': 'string' } );
}
ECMAScript 6版本:
aoColumns.fill( { 'sType': 'string' }, 0, totalCol )
如果您使用的任何库中的JavaScript array.fill
命令都存在polyfill,则这可能适用于您的浏览器。
PHP(服务器端)版本:
<?php
// array( 'stype' => "string" ); for old PHP
$columns = 6;
$aoColumns = array_fill( 0, $columns, [ 'stype' => 'string' ] );
print json_encode($aoColumns);
?>
答案 2 :(得分:0)
我通过使用parseJSON并将字符串转换为JSON来解决这个问题:
aoColumns = '[{"sType":"string"}';
i = 0;
tc = totalCol;
while(i<tc){
aoColumns += ',';
aoColumns += '{"sType":"string"}';
i++;
}
aoColumns += ']';
// if totalCol == 3 then
// aoColumns will return [{"sType":"string"}, {"sType":"string"}, {"sType":"string"}]
aoColumns = $.parseJSON(aoColumns);
这很有用!