首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自JSON API的Datatable视图数据

来自JSON API的Datatable视图数据
EN

Stack Overflow用户
提问于 2019-11-20 23:03:15
回答 1查看 141关注 0票数 2

我想查看包含JSON格式数组的控制器中的数据,但不幸的是,我被困在这里了。场景就是这样的。

我有一个使用Datatable网格的表,我用默认的20行填充了表的行,每行都包含dropdown select2,它工作得很好。当我想要预览包含20行的默认表中的特定数据时,问题就来了。

这是我的控制器,它提供由用户想要的特定数据触发的json数组:

代码语言:javascript
运行
复制
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));
}

我的控制器的输出是:

代码语言:javascript
运行
复制
[{"NO": "1","DESCRIPTION":"Mathematic","SUBJECT":"Praveen Jordan","TOTAL":"95"},{"NO": "2","DESCRIPTION":"Physic","SUBJECT":"Praveen Jordan","TOTAL":"90"}]

我应该处理这个JSON的详细视图是:

代码语言:javascript
运行
复制
<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中。

任何人都可以解决这个问题,我被困在这个问题上大约两天。

EN

回答 1

Stack Overflow用户

发布于 2019-11-25 21:37:58

如果您正在使用ajax获取数据,那么datatable很可能在其中包含任何数据之前就已被初始化。最好使用DataTables ajax选项来填充表。See this example。确保单击Ajax选项卡,查看数据是如何格式化的。您需要在方形花括号和对象数组的名称"data“周围再加上一对花括号。如果您稍后想使用不同参数刷新datatable,请使用

代码语言:javascript
运行
复制
tableObject.ajax.url('new-url-here').load()

Link for reload example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58957411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档