前言:今天根据领导需求,小杰要想办法解决前台DataTable表格插件的Ajax返回数据后重新加载问题;我抱着君要臣想,臣不得不想的宗旨;让我在万能的百度上一顿狂扫,最终得以解决,真是不幸中的万幸;好了废话说完了,大家直接看解决思路吧。

解决思路:

1.移除原有的:$('#table_id').DataTable();

$("#table_id").dataTable().fnDestroy(); //移除table_id的dataTable插件

2.清空原有的$('#table_id')下的内容

$("#table_id").empty(); //清空原有的$('#table_id')下的内容

3.将新的数据添加到$('#table_id')下

$("#table_id").append(result); //将新的数据添加到$('#table_id')下

4.重新加载新的:$('#table_id').DataTable();

$("#table_id").dataTable(); //给table_id重新加载dataTable插件

注:大家可以根据自己的实际情况来进行改动,不需要完全照抄;如果出现js文件冲突,解决办法如下:

//在datatable上面增加,解决冲突
jQuery.noConflict();
$.noConflict();

//后续的datatable用jQuery开头调用格式
jQuery("#table_id").dataTable().fnDestroy();

如果怕用户等待时间长的话,可以加上一个页面Loading(加载)状态样式,也很简单:代码如下:

CSS:

<style type="text/css">
.current a {
    font-size: 20px;
}
.over {
    display: none;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #f5f5f5;
    opacity:0.5;
    z-index: 1000;
}
.layout {
    display: none;
    position: absolute;
    top: 40%;
    left: 40%;
    width: 20%;
    height: 20%;
    z-index: 1001;
    text-align:center;
}
</style>

JS:

<script type="text/javascript">
function showLoading(sta){
    if (sta==1) { //需要加载时传1
        document.getElementById("over").style.display = "block";
        document.getElementById("layout").style.display = "block";
    }else{ //不需要加载时传2或者其他
        document.getElementById("over").style.display = "none";
        document.getElementById("layout").style.display = "none";
    }
}
</script>

HTML:

 <div id="over" class="over"></div>
 <div id="layout" class="layout"><img src="http://images.cnblogs.com/cnblogs_com/qiuyan/477435/o_31.gif" /></div>

在想调用的地方直接:

showLoading(1); //显示

showLoading(2); //隐藏

就可以了。

结束语:要说的就这么多,希望能帮助到大家!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐