开发者社区> 问答> 正文

jquery的datatable fnReloadAjax动态刷新

我初始化datatable是可以得,但是我想通过table里面一个操作传入新的数据源地址,用了fnReloadAjax去刷新,但是出现了Cannot read property 'length' of undefined的错误

<table class="am-table am-table-striped am-table-hover table-main " id="myfile-table" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th><input type="checkbox" id="checkJoiner" /></th>
            <th></th>
            <th>name</th>
            <th>fileSize</th>
            <th>createDate</th>
        </tr>
    </thead>

</table>


<script type="text/javascript" src="https://cdn.datatables.net/plu ... "></script>
<script type=" text/javascript ">
<!--

    $(function(){
        
        initDataTable();
    });

var table;

function initDataTable(){
    $.ajax({
        url: '${ctx}/myfile/getFileJsonData',
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            assignToEventsColumns(data);
        }
    });
}



function reloadDataTable(link){
    table.fnReloadAjax(link);
    
}
function assignToEventsColumns(data) {
    table = $('#myfile-table').dataTable({
        "bAutoWidth ": false,
        "aaData ": data,    
        "sScrollY ": 350,
        "dom ": 'ti',
        "bSort ":false,
         //"bFilter ": true, //搜索栏
         "bPaginate ":false,
        "aoColumnDefs ": [
           {
               "aTargets ": [0],
               "bSearchable ": false,
               "bSortable ": false,
               "bSort ": false,
               "mData ": "id ",
               "mRender ": function (event) {
                   return '<input class="childCheck " type="checkbox " id="childCheckBoxes " value=" ' + event + ' ">';
               }
           },
           {
               "aTargets ": [1],
               "bSearchable ": false,
               "bSortable ": false,
               "bSort ": false,
               "mData ": "suffix ",
               "mRender ": function (data, type, full) {
                   if(full.isDir=='1'){
                       return '<img alt="floder " src="${ctx}/resources/images/drive_30x30/folder_30x30.png ">';
                   }else{
                       return '<img alt="file " src="${ctx}/resources/images/drive_30x30/ '+data+'_30x30.png ">';
                   }
               }
           },
           {
               "aTargets ": [2], 
               "mData ": "name ",
               "mRender ": function (data, type, full) {
                  if(full.isDir=='1'){
                      var path=full.parentPath+full.fileName;
                      return "<a href=\ "javascript:void(0)\" onclick=\
    "reloadDataTable('${ctx}/myfile/getFileJsonData?path=/"+path+ "')\">
    "+full.fileName+"</a>";
                  }else{
                      return data;
                  }
                   }
               
           },
           {
               "aTargets": [3], 
               "mData": "fileSize",
               "mRender": function (event) {
                  return getFileSize(event);
               }
           },
           {
               "aTargets": [4], 
               "mData": "createDate",
               "mRender": function (event) {
                   var newTime = new Date(event);
                   return  newTime.toLocaleDateString();
                }
           }
        ],


    });
}


//-->

</script>

展开
收起
a123456678 2016-03-13 11:27:45 3602 0
1 条回答
写回答
取消 提交回答
  • 我猜是你给的 link 返回的数据有问题,或者 link 本身就有问题。
    建议你在开发者工具中监视一下 Network 看看调用 Ajax 时候的链接 URL,参数,以及输出是否正确。

    至于 datatable 我也没用过,就不好说啥了。

    2019-07-17 19:02:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
23-Vue.js在前端...1506518547.pdf 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载