javascript - jquery的datatable fnReloadAjax动态刷新
巴扎黑
巴扎黑 2017-04-11 10:12:11
[JavaScript讨论组]

我初始化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>
巴扎黑
巴扎黑

全部回复(1)
怪我咯

我猜是你给的 link 返回的数据有问题,或者 link 本身就有问题。
建议你在开发者工具中监视一下 Network 看看调用 Ajax 时候的链接 URL,参数,以及输出是否正确。

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号