我想查看包含JSON格式数组的控制器中的数据,但不幸的是,我被困在这里了。场景就是这样的。
我有一个使用Datatable网格的表,我用默认的20行填充了表的行,每行都包含dropdown select2,它工作得很好。当我想要预览包含20行的默认表中的特定数据时,问题就来了。
这是我的控制器,它提供由用户想要的特定数据触发的json数组:
public function getSpecData($filter="get")
{
$filter = str_replace('_','/', $filter);
$query ="select * from tb_detail where subject='".$filter."'";
$arrData = $this->db->query($query)->result();
print_r(json_encode($arrData,JSON_PRETTY_PRINT));
}
我的控制器的输出是:
[{"NO": "1","DESCRIPTION":"Mathematic","SUBJECT":"Praveen Jordan","TOTAL":"95"},{"NO": "2","DESCRIPTION":"Physic","SUBJECT":"Praveen Jordan","TOTAL":"90"}]
我应该处理这个JSON的详细视图是:
<input type="hidden" id="f_status" style="width:100%" name="f_status" value="<?php echo isset($f_subject)?$f_subject:""; ?>" class="form-control" required readonly>
<input type="hidden" id="f_status" style="width:100%" name="f_status" value="<?php echo isset($f_status)?$f_status:""; ?>" class="form-control" required readonly>
<table id="tb_detail" class="stripe row-border">
<thead>
<tr>
<th>No</th>
<th>Description</th>
<th>Subject</th>
<th>Total</th>
</thead>
<tbody>
<?php
$strDetail="";
for($i=0;$i<20;$i++){
$strDetail.="<tr>";
$strDetail.="<td style=\"text-align:right;\">".($i+1).".</td>";
$strDetail.="<td><select id='txtDesc[]".$i."' name='txtDesc[]".$i."' value=\"\" class=\"desc\" style=\"width:500px;\"></select></td>";
$strDetail.="<td><select name='txtSub[]".$i."' class=\"sub\" value=\"\" style=\"width:200px;\"></select></td>";
$strDetail.="<td><input name='txtTot[]".$i."' class=\"tot\" value=\"\" style=\"width:200px;\"></select></td>";
$strDetail.="</tr>";
}
echo $strDetail;
?>
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function() {
selectedId.push(document.getElementById("f_status").value);
selectedId.push(document.getElementById("f_subject").value);
var subject = selectedId[1];
var table = $('#tb_detail').DataTable( {
scrollY: "400px",
scrollX: true,
scrollCollapse: true,
paging: false,
bInfo : false,
fixedColumns: {
leftColumns: 2,
rightColumns: 1
}
});
$('.tot').number( true, 0, '.', ',' );
$(".desc").select2({
ajax: {
url: '<?php echo base_url();?>index.php/C_index/getLookupSelect2/desc',
dataType: 'json'
}
});
$(".sub").select2({
ajax: {
url: '<?php echo base_url();?>index.php/C_index/getLookupSelect2/sub',
dataType: 'json'
}
});
if (selectedId[0] == 'VIEW') {
$.ajax({
type : 'ajax',
url : '<?php echo base_url();?>index.php/C_index/getSpecData/'+subject,
dataType : 'json',
success : function(data){
var i;
for(i=0; i<data.length; i++){
$('.desc').val(data[i].DESCRIPTION);
$('.sub').val(data[i].SUBJECT);
$('.tot').val(data[i].TOTAL);
}
}
});
}
}
</script>
我想要的输出是如何将JSON数组加载到我的Datatable中。
任何人都可以解决这个问题,我被困在这个问题上大约两天。
发布于 2019-11-25 21:37:58
如果您正在使用ajax获取数据,那么datatable很可能在其中包含任何数据之前就已被初始化。最好使用DataTables ajax选项来填充表。See this example。确保单击Ajax选项卡,查看数据是如何格式化的。您需要在方形花括号和对象数组的名称"data“周围再加上一对花括号。如果您稍后想使用不同参数刷新datatable,请使用
tableObject.ajax.url('new-url-here').load()
https://stackoverflow.com/questions/58957411
复制相似问题