如何在关闭对话框后自动更新JavaScript中的Datatable
解决Datatable更新后自动刷新的问题
嘿,我完全懂你的困扰——更新完数据只能手动刷页面才能看到新值,这体验确实不太好。别担心,咱们几步就能搞定这个事儿,其实原理很简单:在更新成功的那一刻,告诉Datatable重新拉取数据就行。
第一步:找到更新成功的触发点
首先打开你的更新功能JS文件,找到更新操作成功后弹出SweetAlert的代码位置。比如你现在的代码里应该有类似这样的片段:
swal({ title: "产品已更新完成", type: "success"});
我们要在这个SweetAlert之后,添加刷新Datatable的代码。
第二步:调用Datatable的刷新方法
你的主JS文件里已经把Datatable实例存在了全局变量oTable里,所以直接调用它的fnDraw()方法就能让表格重新加载数据。这里有两个小细节:
- 用
fnDraw(false):刷新后保持当前页码,用户体验更流畅 - 用
fnDraw(true):刷新后回到第一页,适合数据更新后需要从头看的场景
给你个具体的代码示例,把它加在更新成功的回调里:
// 假设你的更新Ajax成功回调是这样的 $.ajax({ url: '/你的更新接口地址', method: 'POST', data: 你的更新数据, success: function(res) { if (res.status === "OK") { // 弹出成功提示 swal("搞定!", "产品已更新完成", "success"); // 刷新Datatable if (typeof oTable !== 'undefined' && oTable) { oTable.fnDraw(false); // 保持当前页码刷新 } } else { swal("出错了", res.message, "error"); } }, error: function() { swal("哎呀", "更新失败,请重试", "error"); } });
额外优化:统一刷新函数
看你的主JS里已经有个redraw()函数,现在它只是清空表格,你可以把它改成真正的刷新方法,这样以后其他地方要刷新也能复用:
function redraw() { if (oTable) { oTable.fnDraw(false); // 或者根据需求用true } }
然后更新成功后直接调用redraw()就行,代码更整洁:
swal("搞定!", "产品已更新完成", "success"); redraw(); // 调用统一的刷新函数
注意事项
- 确保主JS文件先于更新JS文件加载,这样
oTable变量才能被更新JS访问到 - 如果你的更新操作是在弹窗里完成的,弹窗关闭后执行刷新也可以,效果是一样的
这样改完之后,下次更新产品信息,SweetAlert弹完,Datatable就会自动加载最新的数据啦,不用再手动刷新页面咯!
内容的提问来源于stack exchange,提问作者Piyush Singal
相关产品推荐
相关产品推荐

